package de.thwildau.tm.moses.thrift.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.thwildau.tm.moses.thrift.services.ThriftGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalThriftParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_LONG", "RULE_HEX", "RULE_DOUBLE", "RULE_SL_COMMENT", "RULE_NUMBER", "RULE_INT", "RULE_ML_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'include'", "'cpp_include'", "'namespace'", "'*'", "'php_namespace'", "'xsd_namespace'", "'const'", "'='", "'typedef'", "'('", "','", "')'", "'enum'", "'{'", "'}'", "'senum'", "'struct'", "'xsd_all'", "'union'", "'exception'", "'service'", "'extends'", "'xsd_optional'", "'xsd_nillable'", "'xsd_attrs'", "':'", "'required'", "'optional'", "'oneway'", "'void'", "'throws'", "'map'", "'<'", "'>'", "'set'", "'list'", "'cpp_type'", "'['", "']'", "';'", "'.'", "'bool'", "'byte'", "'i16'", "'i32'", "'i64'", "'double'", "'string'", "'binary'", "'slist'", "'false'", "'true'"
    };
    public static final int RULE_ID=5;
    public static final int T__66=66;
    public static final int T__64=64;
    public static final int T__29=29;
    public static final int T__65=65;
    public static final int T__28=28;
    public static final int T__62=62;
    public static final int T__27=27;
    public static final int T__63=63;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=14;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int EOF=-1;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__19=19;
    public static final int T__57=57;
    public static final int RULE_HEX=7;
    public static final int T__58=58;
    public static final int T__16=16;
    public static final int T__51=51;
    public static final int T__15=15;
    public static final int T__52=52;
    public static final int T__18=18;
    public static final int T__53=53;
    public static final int T__17=17;
    public static final int T__54=54;
    public static final int RULE_NUMBER=10;
    public static final int T__59=59;
    public static final int RULE_INT=11;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int RULE_LONG=6;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_SL_COMMENT=9;
    public static final int RULE_DOUBLE=8;
    public static final int RULE_ML_COMMENT=12;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int RULE_STRING=4;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=13;

    // delegates
    // delegators


        public InternalThriftParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalThriftParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalThriftParser.tokenNames; }
    public String getGrammarFileName() { return "../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g"; }



     	private ThriftGrammarAccess grammarAccess;
     	
        public InternalThriftParser(TokenStream input, ThriftGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Thrift";	
       	}
       	
       	@Override
       	protected ThriftGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleThrift"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:68:1: entryRuleThrift returns [EObject current=null] : iv_ruleThrift= ruleThrift EOF ;
    public final EObject entryRuleThrift() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleThrift = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:69:2: (iv_ruleThrift= ruleThrift EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:70:2: iv_ruleThrift= ruleThrift EOF
            {
             newCompositeNode(grammarAccess.getThriftRule()); 
            pushFollow(FOLLOW_ruleThrift_in_entryRuleThrift75);
            iv_ruleThrift=ruleThrift();

            state._fsp--;

             current =iv_ruleThrift; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleThrift85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleThrift"


    // $ANTLR start "ruleThrift"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:77:1: ruleThrift returns [EObject current=null] : ( ( (lv_headers_0_0= ruleHeader ) )* ( (lv_definitions_1_0= ruleDefinition ) )* ) ;
    public final EObject ruleThrift() throws RecognitionException {
        EObject current = null;

        EObject lv_headers_0_0 = null;

        EObject lv_definitions_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:80:28: ( ( ( (lv_headers_0_0= ruleHeader ) )* ( (lv_definitions_1_0= ruleDefinition ) )* ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:81:1: ( ( (lv_headers_0_0= ruleHeader ) )* ( (lv_definitions_1_0= ruleDefinition ) )* )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:81:1: ( ( (lv_headers_0_0= ruleHeader ) )* ( (lv_definitions_1_0= ruleDefinition ) )* )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:81:2: ( (lv_headers_0_0= ruleHeader ) )* ( (lv_definitions_1_0= ruleDefinition ) )*
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:81:2: ( (lv_headers_0_0= ruleHeader ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( ((LA1_0>=15 && LA1_0<=17)||(LA1_0>=19 && LA1_0<=20)) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:82:1: (lv_headers_0_0= ruleHeader )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:82:1: (lv_headers_0_0= ruleHeader )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:83:3: lv_headers_0_0= ruleHeader
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getThriftAccess().getHeadersHeaderParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleHeader_in_ruleThrift131);
            	    lv_headers_0_0=ruleHeader();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getThriftRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"headers",
            	            		lv_headers_0_0, 
            	            		"Header");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:99:3: ( (lv_definitions_1_0= ruleDefinition ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( (LA2_0==21||LA2_0==23||LA2_0==27||(LA2_0>=30 && LA2_0<=31)||(LA2_0>=33 && LA2_0<=35)) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:100:1: (lv_definitions_1_0= ruleDefinition )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:100:1: (lv_definitions_1_0= ruleDefinition )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:101:3: lv_definitions_1_0= ruleDefinition
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getThriftAccess().getDefinitionsDefinitionParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleDefinition_in_ruleThrift153);
            	    lv_definitions_1_0=ruleDefinition();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getThriftRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"definitions",
            	            		lv_definitions_1_0, 
            	            		"Definition");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleThrift"


    // $ANTLR start "entryRuleHeader"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:125:1: entryRuleHeader returns [EObject current=null] : iv_ruleHeader= ruleHeader EOF ;
    public final EObject entryRuleHeader() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHeader = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:126:2: (iv_ruleHeader= ruleHeader EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:127:2: iv_ruleHeader= ruleHeader EOF
            {
             newCompositeNode(grammarAccess.getHeaderRule()); 
            pushFollow(FOLLOW_ruleHeader_in_entryRuleHeader190);
            iv_ruleHeader=ruleHeader();

            state._fsp--;

             current =iv_ruleHeader; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHeader200); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHeader"


    // $ANTLR start "ruleHeader"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:134:1: ruleHeader returns [EObject current=null] : (this_Include_0= ruleInclude | this_CppInclude_1= ruleCppInclude | this_Namespace_2= ruleNamespace ) ;
    public final EObject ruleHeader() throws RecognitionException {
        EObject current = null;

        EObject this_Include_0 = null;

        EObject this_CppInclude_1 = null;

        EObject this_Namespace_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:137:28: ( (this_Include_0= ruleInclude | this_CppInclude_1= ruleCppInclude | this_Namespace_2= ruleNamespace ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:138:1: (this_Include_0= ruleInclude | this_CppInclude_1= ruleCppInclude | this_Namespace_2= ruleNamespace )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:138:1: (this_Include_0= ruleInclude | this_CppInclude_1= ruleCppInclude | this_Namespace_2= ruleNamespace )
            int alt3=3;
            switch ( input.LA(1) ) {
            case 15:
                {
                alt3=1;
                }
                break;
            case 16:
                {
                alt3=2;
                }
                break;
            case 17:
            case 19:
            case 20:
                {
                alt3=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }

            switch (alt3) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:139:5: this_Include_0= ruleInclude
                    {
                     
                            newCompositeNode(grammarAccess.getHeaderAccess().getIncludeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleInclude_in_ruleHeader247);
                    this_Include_0=ruleInclude();

                    state._fsp--;

                     
                            current = this_Include_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:149:5: this_CppInclude_1= ruleCppInclude
                    {
                     
                            newCompositeNode(grammarAccess.getHeaderAccess().getCppIncludeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleCppInclude_in_ruleHeader274);
                    this_CppInclude_1=ruleCppInclude();

                    state._fsp--;

                     
                            current = this_CppInclude_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:159:5: this_Namespace_2= ruleNamespace
                    {
                     
                            newCompositeNode(grammarAccess.getHeaderAccess().getNamespaceParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleNamespace_in_ruleHeader301);
                    this_Namespace_2=ruleNamespace();

                    state._fsp--;

                     
                            current = this_Namespace_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHeader"


    // $ANTLR start "entryRuleInclude"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:175:1: entryRuleInclude returns [EObject current=null] : iv_ruleInclude= ruleInclude EOF ;
    public final EObject entryRuleInclude() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInclude = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:176:2: (iv_ruleInclude= ruleInclude EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:177:2: iv_ruleInclude= ruleInclude EOF
            {
             newCompositeNode(grammarAccess.getIncludeRule()); 
            pushFollow(FOLLOW_ruleInclude_in_entryRuleInclude336);
            iv_ruleInclude=ruleInclude();

            state._fsp--;

             current =iv_ruleInclude; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInclude346); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInclude"


    // $ANTLR start "ruleInclude"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:184:1: ruleInclude returns [EObject current=null] : (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleInclude() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:187:28: ( (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:188:1: (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:188:1: (otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:188:3: otherlv_0= 'include' ( (lv_importURI_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,15,FOLLOW_15_in_ruleInclude383); 

                	newLeafNode(otherlv_0, grammarAccess.getIncludeAccess().getIncludeKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:192:1: ( (lv_importURI_1_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:193:1: (lv_importURI_1_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:193:1: (lv_importURI_1_0= RULE_STRING )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:194:3: lv_importURI_1_0= RULE_STRING
            {
            lv_importURI_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleInclude400); 

            			newLeafNode(lv_importURI_1_0, grammarAccess.getIncludeAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIncludeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"importURI",
                    		lv_importURI_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInclude"


    // $ANTLR start "entryRuleCppInclude"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:218:1: entryRuleCppInclude returns [EObject current=null] : iv_ruleCppInclude= ruleCppInclude EOF ;
    public final EObject entryRuleCppInclude() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCppInclude = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:219:2: (iv_ruleCppInclude= ruleCppInclude EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:220:2: iv_ruleCppInclude= ruleCppInclude EOF
            {
             newCompositeNode(grammarAccess.getCppIncludeRule()); 
            pushFollow(FOLLOW_ruleCppInclude_in_entryRuleCppInclude441);
            iv_ruleCppInclude=ruleCppInclude();

            state._fsp--;

             current =iv_ruleCppInclude; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCppInclude451); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCppInclude"


    // $ANTLR start "ruleCppInclude"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:227:1: ruleCppInclude returns [EObject current=null] : (otherlv_0= 'cpp_include' ( (lv_importURI_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleCppInclude() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_importURI_1_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:230:28: ( (otherlv_0= 'cpp_include' ( (lv_importURI_1_0= RULE_STRING ) ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:231:1: (otherlv_0= 'cpp_include' ( (lv_importURI_1_0= RULE_STRING ) ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:231:1: (otherlv_0= 'cpp_include' ( (lv_importURI_1_0= RULE_STRING ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:231:3: otherlv_0= 'cpp_include' ( (lv_importURI_1_0= RULE_STRING ) )
            {
            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleCppInclude488); 

                	newLeafNode(otherlv_0, grammarAccess.getCppIncludeAccess().getCpp_includeKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:235:1: ( (lv_importURI_1_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:236:1: (lv_importURI_1_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:236:1: (lv_importURI_1_0= RULE_STRING )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:237:3: lv_importURI_1_0= RULE_STRING
            {
            lv_importURI_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCppInclude505); 

            			newLeafNode(lv_importURI_1_0, grammarAccess.getCppIncludeAccess().getImportURISTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getCppIncludeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"importURI",
                    		lv_importURI_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCppInclude"


    // $ANTLR start "entryRuleNamespace"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:261:1: entryRuleNamespace returns [EObject current=null] : iv_ruleNamespace= ruleNamespace EOF ;
    public final EObject entryRuleNamespace() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamespace = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:262:2: (iv_ruleNamespace= ruleNamespace EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:263:2: iv_ruleNamespace= ruleNamespace EOF
            {
             newCompositeNode(grammarAccess.getNamespaceRule()); 
            pushFollow(FOLLOW_ruleNamespace_in_entryRuleNamespace546);
            iv_ruleNamespace=ruleNamespace();

            state._fsp--;

             current =iv_ruleNamespace; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamespace556); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamespace"


    // $ANTLR start "ruleNamespace"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:270:1: ruleNamespace returns [EObject current=null] : ( (otherlv_0= 'namespace' ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) ) ) | (otherlv_3= 'php_namespace' ( (lv_namespaceURI_4_0= RULE_STRING ) ) ) | (otherlv_5= 'xsd_namespace' ( (lv_namespaceURI_6_0= RULE_STRING ) ) ) ) ;
    public final EObject ruleNamespace() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_namespaceScope_1_1=null;
        Token otherlv_3=null;
        Token lv_namespaceURI_4_0=null;
        Token otherlv_5=null;
        Token lv_namespaceURI_6_0=null;
        AntlrDatatypeRuleToken lv_namespaceScope_1_2 = null;

        AntlrDatatypeRuleToken lv_namespaceURI_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:273:28: ( ( (otherlv_0= 'namespace' ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) ) ) | (otherlv_3= 'php_namespace' ( (lv_namespaceURI_4_0= RULE_STRING ) ) ) | (otherlv_5= 'xsd_namespace' ( (lv_namespaceURI_6_0= RULE_STRING ) ) ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:274:1: ( (otherlv_0= 'namespace' ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) ) ) | (otherlv_3= 'php_namespace' ( (lv_namespaceURI_4_0= RULE_STRING ) ) ) | (otherlv_5= 'xsd_namespace' ( (lv_namespaceURI_6_0= RULE_STRING ) ) ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:274:1: ( (otherlv_0= 'namespace' ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) ) ) | (otherlv_3= 'php_namespace' ( (lv_namespaceURI_4_0= RULE_STRING ) ) ) | (otherlv_5= 'xsd_namespace' ( (lv_namespaceURI_6_0= RULE_STRING ) ) ) )
            int alt5=3;
            switch ( input.LA(1) ) {
            case 17:
                {
                alt5=1;
                }
                break;
            case 19:
                {
                alt5=2;
                }
                break;
            case 20:
                {
                alt5=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:274:2: (otherlv_0= 'namespace' ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) ) )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:274:2: (otherlv_0= 'namespace' ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:274:4: otherlv_0= 'namespace' ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) )
                    {
                    otherlv_0=(Token)match(input,17,FOLLOW_17_in_ruleNamespace594); 

                        	newLeafNode(otherlv_0, grammarAccess.getNamespaceAccess().getNamespaceKeyword_0_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:278:1: ( ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:278:2: ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) ) ( (lv_namespaceURI_2_0= ruleQualifiedName ) )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:278:2: ( ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:279:1: ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:279:1: ( (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:280:1: (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:280:1: (lv_namespaceScope_1_1= '*' | lv_namespaceScope_1_2= ruleQualifiedName )
                    int alt4=2;
                    int LA4_0 = input.LA(1);

                    if ( (LA4_0==18) ) {
                        alt4=1;
                    }
                    else if ( (LA4_0==RULE_ID) ) {
                        alt4=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 4, 0, input);

                        throw nvae;
                    }
                    switch (alt4) {
                        case 1 :
                            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:281:3: lv_namespaceScope_1_1= '*'
                            {
                            lv_namespaceScope_1_1=(Token)match(input,18,FOLLOW_18_in_ruleNamespace615); 

                                    newLeafNode(lv_namespaceScope_1_1, grammarAccess.getNamespaceAccess().getNamespaceScopeAsteriskKeyword_0_1_0_0_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getNamespaceRule());
                            	        }
                                   		setWithLastConsumed(current, "namespaceScope", lv_namespaceScope_1_1, null);
                            	    

                            }
                            break;
                        case 2 :
                            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:293:8: lv_namespaceScope_1_2= ruleQualifiedName
                            {
                             
                            	        newCompositeNode(grammarAccess.getNamespaceAccess().getNamespaceScopeQualifiedNameParserRuleCall_0_1_0_0_1()); 
                            	    
                            pushFollow(FOLLOW_ruleQualifiedName_in_ruleNamespace647);
                            lv_namespaceScope_1_2=ruleQualifiedName();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"namespaceScope",
                                    		lv_namespaceScope_1_2, 
                                    		"QualifiedName");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }
                            break;

                    }


                    }


                    }

                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:311:2: ( (lv_namespaceURI_2_0= ruleQualifiedName ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:312:1: (lv_namespaceURI_2_0= ruleQualifiedName )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:312:1: (lv_namespaceURI_2_0= ruleQualifiedName )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:313:3: lv_namespaceURI_2_0= ruleQualifiedName
                    {
                     
                    	        newCompositeNode(grammarAccess.getNamespaceAccess().getNamespaceURIQualifiedNameParserRuleCall_0_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleQualifiedName_in_ruleNamespace671);
                    lv_namespaceURI_2_0=ruleQualifiedName();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNamespaceRule());
                    	        }
                           		set(
                           			current, 
                           			"namespaceURI",
                            		lv_namespaceURI_2_0, 
                            		"QualifiedName");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:330:6: (otherlv_3= 'php_namespace' ( (lv_namespaceURI_4_0= RULE_STRING ) ) )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:330:6: (otherlv_3= 'php_namespace' ( (lv_namespaceURI_4_0= RULE_STRING ) ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:330:8: otherlv_3= 'php_namespace' ( (lv_namespaceURI_4_0= RULE_STRING ) )
                    {
                    otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleNamespace692); 

                        	newLeafNode(otherlv_3, grammarAccess.getNamespaceAccess().getPhp_namespaceKeyword_1_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:334:1: ( (lv_namespaceURI_4_0= RULE_STRING ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:335:1: (lv_namespaceURI_4_0= RULE_STRING )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:335:1: (lv_namespaceURI_4_0= RULE_STRING )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:336:3: lv_namespaceURI_4_0= RULE_STRING
                    {
                    lv_namespaceURI_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleNamespace709); 

                    			newLeafNode(lv_namespaceURI_4_0, grammarAccess.getNamespaceAccess().getNamespaceURISTRINGTerminalRuleCall_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getNamespaceRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"namespaceURI",
                            		lv_namespaceURI_4_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:353:6: (otherlv_5= 'xsd_namespace' ( (lv_namespaceURI_6_0= RULE_STRING ) ) )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:353:6: (otherlv_5= 'xsd_namespace' ( (lv_namespaceURI_6_0= RULE_STRING ) ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:353:8: otherlv_5= 'xsd_namespace' ( (lv_namespaceURI_6_0= RULE_STRING ) )
                    {
                    otherlv_5=(Token)match(input,20,FOLLOW_20_in_ruleNamespace734); 

                        	newLeafNode(otherlv_5, grammarAccess.getNamespaceAccess().getXsd_namespaceKeyword_2_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:357:1: ( (lv_namespaceURI_6_0= RULE_STRING ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:358:1: (lv_namespaceURI_6_0= RULE_STRING )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:358:1: (lv_namespaceURI_6_0= RULE_STRING )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:359:3: lv_namespaceURI_6_0= RULE_STRING
                    {
                    lv_namespaceURI_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleNamespace751); 

                    			newLeafNode(lv_namespaceURI_6_0, grammarAccess.getNamespaceAccess().getNamespaceURISTRINGTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getNamespaceRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"namespaceURI",
                            		lv_namespaceURI_6_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamespace"


    // $ANTLR start "entryRuleDefinition"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:383:1: entryRuleDefinition returns [EObject current=null] : iv_ruleDefinition= ruleDefinition EOF ;
    public final EObject entryRuleDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefinition = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:384:2: (iv_ruleDefinition= ruleDefinition EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:385:2: iv_ruleDefinition= ruleDefinition EOF
            {
             newCompositeNode(grammarAccess.getDefinitionRule()); 
            pushFollow(FOLLOW_ruleDefinition_in_entryRuleDefinition793);
            iv_ruleDefinition=ruleDefinition();

            state._fsp--;

             current =iv_ruleDefinition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinition803); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefinition"


    // $ANTLR start "ruleDefinition"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:392:1: ruleDefinition returns [EObject current=null] : (this_Const_0= ruleConst | this_TypeDef_1= ruleTypeDef | this_Enum_2= ruleEnum | this_Senum_3= ruleSenum | this_Struct_4= ruleStruct | this_Union_5= ruleUnion | this_Exception_6= ruleException | this_Service_7= ruleService ) ;
    public final EObject ruleDefinition() throws RecognitionException {
        EObject current = null;

        EObject this_Const_0 = null;

        EObject this_TypeDef_1 = null;

        EObject this_Enum_2 = null;

        EObject this_Senum_3 = null;

        EObject this_Struct_4 = null;

        EObject this_Union_5 = null;

        EObject this_Exception_6 = null;

        EObject this_Service_7 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:395:28: ( (this_Const_0= ruleConst | this_TypeDef_1= ruleTypeDef | this_Enum_2= ruleEnum | this_Senum_3= ruleSenum | this_Struct_4= ruleStruct | this_Union_5= ruleUnion | this_Exception_6= ruleException | this_Service_7= ruleService ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:396:1: (this_Const_0= ruleConst | this_TypeDef_1= ruleTypeDef | this_Enum_2= ruleEnum | this_Senum_3= ruleSenum | this_Struct_4= ruleStruct | this_Union_5= ruleUnion | this_Exception_6= ruleException | this_Service_7= ruleService )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:396:1: (this_Const_0= ruleConst | this_TypeDef_1= ruleTypeDef | this_Enum_2= ruleEnum | this_Senum_3= ruleSenum | this_Struct_4= ruleStruct | this_Union_5= ruleUnion | this_Exception_6= ruleException | this_Service_7= ruleService )
            int alt6=8;
            switch ( input.LA(1) ) {
            case 21:
                {
                alt6=1;
                }
                break;
            case 23:
                {
                alt6=2;
                }
                break;
            case 27:
                {
                alt6=3;
                }
                break;
            case 30:
                {
                alt6=4;
                }
                break;
            case 31:
                {
                alt6=5;
                }
                break;
            case 33:
                {
                alt6=6;
                }
                break;
            case 34:
                {
                alt6=7;
                }
                break;
            case 35:
                {
                alt6=8;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:397:5: this_Const_0= ruleConst
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getConstParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleConst_in_ruleDefinition850);
                    this_Const_0=ruleConst();

                    state._fsp--;

                     
                            current = this_Const_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:407:5: this_TypeDef_1= ruleTypeDef
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getTypeDefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleTypeDef_in_ruleDefinition877);
                    this_TypeDef_1=ruleTypeDef();

                    state._fsp--;

                     
                            current = this_TypeDef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:417:5: this_Enum_2= ruleEnum
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getEnumParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleEnum_in_ruleDefinition904);
                    this_Enum_2=ruleEnum();

                    state._fsp--;

                     
                            current = this_Enum_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:427:5: this_Senum_3= ruleSenum
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getSenumParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleSenum_in_ruleDefinition931);
                    this_Senum_3=ruleSenum();

                    state._fsp--;

                     
                            current = this_Senum_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:437:5: this_Struct_4= ruleStruct
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getStructParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleStruct_in_ruleDefinition958);
                    this_Struct_4=ruleStruct();

                    state._fsp--;

                     
                            current = this_Struct_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:447:5: this_Union_5= ruleUnion
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getUnionParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleUnion_in_ruleDefinition985);
                    this_Union_5=ruleUnion();

                    state._fsp--;

                     
                            current = this_Union_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 7 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:457:5: this_Exception_6= ruleException
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getExceptionParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_ruleException_in_ruleDefinition1012);
                    this_Exception_6=ruleException();

                    state._fsp--;

                     
                            current = this_Exception_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 8 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:467:5: this_Service_7= ruleService
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionAccess().getServiceParserRuleCall_7()); 
                        
                    pushFollow(FOLLOW_ruleService_in_ruleDefinition1039);
                    this_Service_7=ruleService();

                    state._fsp--;

                     
                            current = this_Service_7; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefinition"


    // $ANTLR start "entryRuleConst"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:483:1: entryRuleConst returns [EObject current=null] : iv_ruleConst= ruleConst EOF ;
    public final EObject entryRuleConst() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConst = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:484:2: (iv_ruleConst= ruleConst EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:485:2: iv_ruleConst= ruleConst EOF
            {
             newCompositeNode(grammarAccess.getConstRule()); 
            pushFollow(FOLLOW_ruleConst_in_entryRuleConst1074);
            iv_ruleConst=ruleConst();

            state._fsp--;

             current =iv_ruleConst; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConst1084); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConst"


    // $ANTLR start "ruleConst"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:492:1: ruleConst returns [EObject current=null] : (otherlv_0= 'const' ( (lv_type_1_0= ruleFieldType ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) ( ruleListSeparator )? ) ;
    public final EObject ruleConst() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        EObject lv_type_1_0 = null;

        EObject lv_value_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:495:28: ( (otherlv_0= 'const' ( (lv_type_1_0= ruleFieldType ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) ( ruleListSeparator )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:496:1: (otherlv_0= 'const' ( (lv_type_1_0= ruleFieldType ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) ( ruleListSeparator )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:496:1: (otherlv_0= 'const' ( (lv_type_1_0= ruleFieldType ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) ( ruleListSeparator )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:496:3: otherlv_0= 'const' ( (lv_type_1_0= ruleFieldType ) ) ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '=' ( (lv_value_4_0= ruleConstValue ) ) ( ruleListSeparator )?
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleConst1121); 

                	newLeafNode(otherlv_0, grammarAccess.getConstAccess().getConstKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:500:1: ( (lv_type_1_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:501:1: (lv_type_1_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:501:1: (lv_type_1_0= ruleFieldType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:502:3: lv_type_1_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getConstAccess().getTypeFieldTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleConst1142);
            lv_type_1_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getConstRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_1_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:518:2: ( (lv_name_2_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:519:1: (lv_name_2_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:519:1: (lv_name_2_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:520:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleConst1159); 

            			newLeafNode(lv_name_2_0, grammarAccess.getConstAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getConstRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            otherlv_3=(Token)match(input,22,FOLLOW_22_in_ruleConst1176); 

                	newLeafNode(otherlv_3, grammarAccess.getConstAccess().getEqualsSignKeyword_3());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:540:1: ( (lv_value_4_0= ruleConstValue ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:541:1: (lv_value_4_0= ruleConstValue )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:541:1: (lv_value_4_0= ruleConstValue )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:542:3: lv_value_4_0= ruleConstValue
            {
             
            	        newCompositeNode(grammarAccess.getConstAccess().getValueConstValueParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleConstValue_in_ruleConst1197);
            lv_value_4_0=ruleConstValue();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getConstRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_4_0, 
                    		"ConstValue");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:558:2: ( ruleListSeparator )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==25||LA7_0==54) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:559:5: ruleListSeparator
                    {
                     
                            newCompositeNode(grammarAccess.getConstAccess().getListSeparatorParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleListSeparator_in_ruleConst1214);
                    ruleListSeparator();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConst"


    // $ANTLR start "entryRuleTypeDef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:574:1: entryRuleTypeDef returns [EObject current=null] : iv_ruleTypeDef= ruleTypeDef EOF ;
    public final EObject entryRuleTypeDef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeDef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:575:2: (iv_ruleTypeDef= ruleTypeDef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:576:2: iv_ruleTypeDef= ruleTypeDef EOF
            {
             newCompositeNode(grammarAccess.getTypeDefRule()); 
            pushFollow(FOLLOW_ruleTypeDef_in_entryRuleTypeDef1251);
            iv_ruleTypeDef=ruleTypeDef();

            state._fsp--;

             current =iv_ruleTypeDef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeDef1261); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeDef"


    // $ANTLR start "ruleTypeDef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:583:1: ruleTypeDef returns [EObject current=null] : (otherlv_0= 'typedef' ( (lv_type_1_0= ruleDefinitionType ) ) ( (lv_annotation_2_0= ruleAnnotation ) )? ( (lv_name_3_0= RULE_ID ) ) ) ;
    public final EObject ruleTypeDef() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_3_0=null;
        EObject lv_type_1_0 = null;

        EObject lv_annotation_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:586:28: ( (otherlv_0= 'typedef' ( (lv_type_1_0= ruleDefinitionType ) ) ( (lv_annotation_2_0= ruleAnnotation ) )? ( (lv_name_3_0= RULE_ID ) ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:587:1: (otherlv_0= 'typedef' ( (lv_type_1_0= ruleDefinitionType ) ) ( (lv_annotation_2_0= ruleAnnotation ) )? ( (lv_name_3_0= RULE_ID ) ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:587:1: (otherlv_0= 'typedef' ( (lv_type_1_0= ruleDefinitionType ) ) ( (lv_annotation_2_0= ruleAnnotation ) )? ( (lv_name_3_0= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:587:3: otherlv_0= 'typedef' ( (lv_type_1_0= ruleDefinitionType ) ) ( (lv_annotation_2_0= ruleAnnotation ) )? ( (lv_name_3_0= RULE_ID ) )
            {
            otherlv_0=(Token)match(input,23,FOLLOW_23_in_ruleTypeDef1298); 

                	newLeafNode(otherlv_0, grammarAccess.getTypeDefAccess().getTypedefKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:591:1: ( (lv_type_1_0= ruleDefinitionType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:592:1: (lv_type_1_0= ruleDefinitionType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:592:1: (lv_type_1_0= ruleDefinitionType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:593:3: lv_type_1_0= ruleDefinitionType
            {
             
            	        newCompositeNode(grammarAccess.getTypeDefAccess().getTypeDefinitionTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleDefinitionType_in_ruleTypeDef1319);
            lv_type_1_0=ruleDefinitionType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTypeDefRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_1_0, 
                    		"DefinitionType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:609:2: ( (lv_annotation_2_0= ruleAnnotation ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==24) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:610:1: (lv_annotation_2_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:610:1: (lv_annotation_2_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:611:3: lv_annotation_2_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getTypeDefAccess().getAnnotationAnnotationParserRuleCall_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleTypeDef1340);
                    lv_annotation_2_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getTypeDefRule());
                    	        }
                           		set(
                           			current, 
                           			"annotation",
                            		lv_annotation_2_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:627:3: ( (lv_name_3_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:628:1: (lv_name_3_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:628:1: (lv_name_3_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:629:3: lv_name_3_0= RULE_ID
            {
            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTypeDef1358); 

            			newLeafNode(lv_name_3_0, grammarAccess.getTypeDefAccess().getNameIDTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTypeDefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_3_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeDef"


    // $ANTLR start "entryRuleAnnotation"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:653:1: entryRuleAnnotation returns [EObject current=null] : iv_ruleAnnotation= ruleAnnotation EOF ;
    public final EObject entryRuleAnnotation() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnnotation = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:654:2: (iv_ruleAnnotation= ruleAnnotation EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:655:2: iv_ruleAnnotation= ruleAnnotation EOF
            {
             newCompositeNode(grammarAccess.getAnnotationRule()); 
            pushFollow(FOLLOW_ruleAnnotation_in_entryRuleAnnotation1399);
            iv_ruleAnnotation=ruleAnnotation();

            state._fsp--;

             current =iv_ruleAnnotation; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAnnotation1409); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAnnotation"


    // $ANTLR start "ruleAnnotation"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:662:1: ruleAnnotation returns [EObject current=null] : (otherlv_0= '(' ( (lv_elements_1_0= ruleAnnotationElement ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleAnnotationElement ) ) )* otherlv_4= ')' ) ;
    public final EObject ruleAnnotation() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_elements_1_0 = null;

        EObject lv_elements_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:665:28: ( (otherlv_0= '(' ( (lv_elements_1_0= ruleAnnotationElement ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleAnnotationElement ) ) )* otherlv_4= ')' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:666:1: (otherlv_0= '(' ( (lv_elements_1_0= ruleAnnotationElement ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleAnnotationElement ) ) )* otherlv_4= ')' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:666:1: (otherlv_0= '(' ( (lv_elements_1_0= ruleAnnotationElement ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleAnnotationElement ) ) )* otherlv_4= ')' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:666:3: otherlv_0= '(' ( (lv_elements_1_0= ruleAnnotationElement ) ) (otherlv_2= ',' ( (lv_elements_3_0= ruleAnnotationElement ) ) )* otherlv_4= ')'
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleAnnotation1446); 

                	newLeafNode(otherlv_0, grammarAccess.getAnnotationAccess().getLeftParenthesisKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:670:1: ( (lv_elements_1_0= ruleAnnotationElement ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:671:1: (lv_elements_1_0= ruleAnnotationElement )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:671:1: (lv_elements_1_0= ruleAnnotationElement )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:672:3: lv_elements_1_0= ruleAnnotationElement
            {
             
            	        newCompositeNode(grammarAccess.getAnnotationAccess().getElementsAnnotationElementParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleAnnotationElement_in_ruleAnnotation1467);
            lv_elements_1_0=ruleAnnotationElement();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAnnotationRule());
            	        }
                   		add(
                   			current, 
                   			"elements",
                    		lv_elements_1_0, 
                    		"AnnotationElement");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:688:2: (otherlv_2= ',' ( (lv_elements_3_0= ruleAnnotationElement ) ) )*
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==25) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:688:4: otherlv_2= ',' ( (lv_elements_3_0= ruleAnnotationElement ) )
            	    {
            	    otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleAnnotation1480); 

            	        	newLeafNode(otherlv_2, grammarAccess.getAnnotationAccess().getCommaKeyword_2_0());
            	        
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:692:1: ( (lv_elements_3_0= ruleAnnotationElement ) )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:693:1: (lv_elements_3_0= ruleAnnotationElement )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:693:1: (lv_elements_3_0= ruleAnnotationElement )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:694:3: lv_elements_3_0= ruleAnnotationElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getAnnotationAccess().getElementsAnnotationElementParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAnnotationElement_in_ruleAnnotation1501);
            	    lv_elements_3_0=ruleAnnotationElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getAnnotationRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_3_0, 
            	            		"AnnotationElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

            otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleAnnotation1515); 

                	newLeafNode(otherlv_4, grammarAccess.getAnnotationAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnnotation"


    // $ANTLR start "entryRuleAnnotationElement"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:722:1: entryRuleAnnotationElement returns [EObject current=null] : iv_ruleAnnotationElement= ruleAnnotationElement EOF ;
    public final EObject entryRuleAnnotationElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnnotationElement = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:723:2: (iv_ruleAnnotationElement= ruleAnnotationElement EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:724:2: iv_ruleAnnotationElement= ruleAnnotationElement EOF
            {
             newCompositeNode(grammarAccess.getAnnotationElementRule()); 
            pushFollow(FOLLOW_ruleAnnotationElement_in_entryRuleAnnotationElement1551);
            iv_ruleAnnotationElement=ruleAnnotationElement();

            state._fsp--;

             current =iv_ruleAnnotationElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAnnotationElement1561); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAnnotationElement"


    // $ANTLR start "ruleAnnotationElement"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:731:1: ruleAnnotationElement returns [EObject current=null] : ( ( (lv_name_0_0= ruleQualifiedName ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) ( ruleListSeparator )? ) ;
    public final EObject ruleAnnotationElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_value_2_0=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:734:28: ( ( ( (lv_name_0_0= ruleQualifiedName ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) ( ruleListSeparator )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:735:1: ( ( (lv_name_0_0= ruleQualifiedName ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) ( ruleListSeparator )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:735:1: ( ( (lv_name_0_0= ruleQualifiedName ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) ( ruleListSeparator )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:735:2: ( (lv_name_0_0= ruleQualifiedName ) ) otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) ( ruleListSeparator )?
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:735:2: ( (lv_name_0_0= ruleQualifiedName ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:736:1: (lv_name_0_0= ruleQualifiedName )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:736:1: (lv_name_0_0= ruleQualifiedName )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:737:3: lv_name_0_0= ruleQualifiedName
            {
             
            	        newCompositeNode(grammarAccess.getAnnotationElementAccess().getNameQualifiedNameParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleAnnotationElement1607);
            lv_name_0_0=ruleQualifiedName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAnnotationElementRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"QualifiedName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,22,FOLLOW_22_in_ruleAnnotationElement1619); 

                	newLeafNode(otherlv_1, grammarAccess.getAnnotationElementAccess().getEqualsSignKeyword_1());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:757:1: ( (lv_value_2_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:758:1: (lv_value_2_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:758:1: (lv_value_2_0= RULE_STRING )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:759:3: lv_value_2_0= RULE_STRING
            {
            lv_value_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleAnnotationElement1636); 

            			newLeafNode(lv_value_2_0, grammarAccess.getAnnotationElementAccess().getValueSTRINGTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAnnotationElementRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_2_0, 
                    		"STRING");
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:775:2: ( ruleListSeparator )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( (LA10_0==25) ) {
                int LA10_1 = input.LA(2);

                if ( (LA10_1==EOF||(LA10_1>=25 && LA10_1<=26)) ) {
                    alt10=1;
                }
            }
            else if ( (LA10_0==54) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:776:5: ruleListSeparator
                    {
                     
                            newCompositeNode(grammarAccess.getAnnotationElementAccess().getListSeparatorParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleListSeparator_in_ruleAnnotationElement1658);
                    ruleListSeparator();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnnotationElement"


    // $ANTLR start "entryRuleEnum"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:791:1: entryRuleEnum returns [EObject current=null] : iv_ruleEnum= ruleEnum EOF ;
    public final EObject entryRuleEnum() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnum = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:792:2: (iv_ruleEnum= ruleEnum EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:793:2: iv_ruleEnum= ruleEnum EOF
            {
             newCompositeNode(grammarAccess.getEnumRule()); 
            pushFollow(FOLLOW_ruleEnum_in_entryRuleEnum1695);
            iv_ruleEnum=ruleEnum();

            state._fsp--;

             current =iv_ruleEnum; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnum1705); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnum"


    // $ANTLR start "ruleEnum"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:800:1: ruleEnum returns [EObject current=null] : (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleEnumElement ) )* otherlv_4= '}' ) ;
    public final EObject ruleEnum() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_elements_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:803:28: ( (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleEnumElement ) )* otherlv_4= '}' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:804:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleEnumElement ) )* otherlv_4= '}' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:804:1: (otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleEnumElement ) )* otherlv_4= '}' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:804:3: otherlv_0= 'enum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleEnumElement ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleEnum1742); 

                	newLeafNode(otherlv_0, grammarAccess.getEnumAccess().getEnumKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:808:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:809:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:809:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:810:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnum1759); 

            			newLeafNode(lv_name_1_0, grammarAccess.getEnumAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleEnum1776); 

                	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:830:1: ( (lv_elements_3_0= ruleEnumElement ) )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( (LA11_0==RULE_ID) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:831:1: (lv_elements_3_0= ruleEnumElement )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:831:1: (lv_elements_3_0= ruleEnumElement )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:832:3: lv_elements_3_0= ruleEnumElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getEnumAccess().getElementsEnumElementParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleEnumElement_in_ruleEnum1797);
            	    lv_elements_3_0=ruleEnumElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getEnumRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_3_0, 
            	            		"EnumElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleEnum1810); 

                	newLeafNode(otherlv_4, grammarAccess.getEnumAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnum"


    // $ANTLR start "entryRuleEnumElement"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:860:1: entryRuleEnumElement returns [EObject current=null] : iv_ruleEnumElement= ruleEnumElement EOF ;
    public final EObject entryRuleEnumElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumElement = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:861:2: (iv_ruleEnumElement= ruleEnumElement EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:862:2: iv_ruleEnumElement= ruleEnumElement EOF
            {
             newCompositeNode(grammarAccess.getEnumElementRule()); 
            pushFollow(FOLLOW_ruleEnumElement_in_entryRuleEnumElement1846);
            iv_ruleEnumElement=ruleEnumElement();

            state._fsp--;

             current =iv_ruleEnumElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumElement1856); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumElement"


    // $ANTLR start "ruleEnumElement"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:869:1: ruleEnumElement returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_LONG ) ) )? ( ruleListSeparator )? ) ;
    public final EObject ruleEnumElement() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token lv_value_2_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:872:28: ( ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_LONG ) ) )? ( ruleListSeparator )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:873:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_LONG ) ) )? ( ruleListSeparator )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:873:1: ( ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_LONG ) ) )? ( ruleListSeparator )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:873:2: ( (lv_name_0_0= RULE_ID ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_LONG ) ) )? ( ruleListSeparator )?
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:873:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:874:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:874:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:875:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumElement1898); 

            			newLeafNode(lv_name_0_0, grammarAccess.getEnumElementAccess().getNameIDTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getEnumElementRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:891:2: (otherlv_1= '=' ( (lv_value_2_0= RULE_LONG ) ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==22) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:891:4: otherlv_1= '=' ( (lv_value_2_0= RULE_LONG ) )
                    {
                    otherlv_1=(Token)match(input,22,FOLLOW_22_in_ruleEnumElement1916); 

                        	newLeafNode(otherlv_1, grammarAccess.getEnumElementAccess().getEqualsSignKeyword_1_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:895:1: ( (lv_value_2_0= RULE_LONG ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:896:1: (lv_value_2_0= RULE_LONG )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:896:1: (lv_value_2_0= RULE_LONG )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:897:3: lv_value_2_0= RULE_LONG
                    {
                    lv_value_2_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleEnumElement1933); 

                    			newLeafNode(lv_value_2_0, grammarAccess.getEnumElementAccess().getValueLONGTerminalRuleCall_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getEnumElementRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"value",
                            		lv_value_2_0, 
                            		"LONG");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:913:4: ( ruleListSeparator )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==25||LA13_0==54) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:914:5: ruleListSeparator
                    {
                     
                            newCompositeNode(grammarAccess.getEnumElementAccess().getListSeparatorParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleListSeparator_in_ruleEnumElement1957);
                    ruleListSeparator();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumElement"


    // $ANTLR start "entryRuleSenum"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:929:1: entryRuleSenum returns [EObject current=null] : iv_ruleSenum= ruleSenum EOF ;
    public final EObject entryRuleSenum() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSenum = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:930:2: (iv_ruleSenum= ruleSenum EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:931:2: iv_ruleSenum= ruleSenum EOF
            {
             newCompositeNode(grammarAccess.getSenumRule()); 
            pushFollow(FOLLOW_ruleSenum_in_entryRuleSenum1994);
            iv_ruleSenum=ruleSenum();

            state._fsp--;

             current =iv_ruleSenum; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSenum2004); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSenum"


    // $ANTLR start "ruleSenum"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:938:1: ruleSenum returns [EObject current=null] : (otherlv_0= 'senum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_elements_3_0= RULE_STRING ) ) ( ruleListSeparator )? )* otherlv_5= '}' ) ;
    public final EObject ruleSenum() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token lv_elements_3_0=null;
        Token otherlv_5=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:941:28: ( (otherlv_0= 'senum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_elements_3_0= RULE_STRING ) ) ( ruleListSeparator )? )* otherlv_5= '}' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:942:1: (otherlv_0= 'senum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_elements_3_0= RULE_STRING ) ) ( ruleListSeparator )? )* otherlv_5= '}' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:942:1: (otherlv_0= 'senum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_elements_3_0= RULE_STRING ) ) ( ruleListSeparator )? )* otherlv_5= '}' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:942:3: otherlv_0= 'senum' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( ( (lv_elements_3_0= RULE_STRING ) ) ( ruleListSeparator )? )* otherlv_5= '}'
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_ruleSenum2041); 

                	newLeafNode(otherlv_0, grammarAccess.getSenumAccess().getSenumKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:946:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:947:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:947:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:948:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSenum2058); 

            			newLeafNode(lv_name_1_0, grammarAccess.getSenumAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSenumRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleSenum2075); 

                	newLeafNode(otherlv_2, grammarAccess.getSenumAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:968:1: ( ( (lv_elements_3_0= RULE_STRING ) ) ( ruleListSeparator )? )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==RULE_STRING) ) {
                    alt15=1;
                }


                switch (alt15) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:968:2: ( (lv_elements_3_0= RULE_STRING ) ) ( ruleListSeparator )?
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:968:2: ( (lv_elements_3_0= RULE_STRING ) )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:969:1: (lv_elements_3_0= RULE_STRING )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:969:1: (lv_elements_3_0= RULE_STRING )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:970:3: lv_elements_3_0= RULE_STRING
            	    {
            	    lv_elements_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSenum2093); 

            	    			newLeafNode(lv_elements_3_0, grammarAccess.getSenumAccess().getElementsSTRINGTerminalRuleCall_3_0_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getSenumRule());
            	    	        }
            	           		addWithLastConsumed(
            	           			current, 
            	           			"elements",
            	            		lv_elements_3_0, 
            	            		"STRING");
            	    	    

            	    }


            	    }

            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:986:2: ( ruleListSeparator )?
            	    int alt14=2;
            	    int LA14_0 = input.LA(1);

            	    if ( (LA14_0==25||LA14_0==54) ) {
            	        alt14=1;
            	    }
            	    switch (alt14) {
            	        case 1 :
            	            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:987:5: ruleListSeparator
            	            {
            	             
            	                    newCompositeNode(grammarAccess.getSenumAccess().getListSeparatorParserRuleCall_3_1()); 
            	                
            	            pushFollow(FOLLOW_ruleListSeparator_in_ruleSenum2115);
            	            ruleListSeparator();

            	            state._fsp--;

            	             
            	                    afterParserOrEnumRuleCall();
            	                

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);

            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleSenum2130); 

                	newLeafNode(otherlv_5, grammarAccess.getSenumAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSenum"


    // $ANTLR start "entryRuleStruct"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1006:1: entryRuleStruct returns [EObject current=null] : iv_ruleStruct= ruleStruct EOF ;
    public final EObject entryRuleStruct() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStruct = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1007:2: (iv_ruleStruct= ruleStruct EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1008:2: iv_ruleStruct= ruleStruct EOF
            {
             newCompositeNode(grammarAccess.getStructRule()); 
            pushFollow(FOLLOW_ruleStruct_in_entryRuleStruct2166);
            iv_ruleStruct=ruleStruct();

            state._fsp--;

             current =iv_ruleStruct; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStruct2176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStruct"


    // $ANTLR start "ruleStruct"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1015:1: ruleStruct returns [EObject current=null] : (otherlv_0= 'struct' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ) ;
    public final EObject ruleStruct() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_fields_4_0 = null;

        EObject lv_annotation_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1018:28: ( (otherlv_0= 'struct' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1019:1: (otherlv_0= 'struct' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1019:1: (otherlv_0= 'struct' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1019:3: otherlv_0= 'struct' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )?
            {
            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleStruct2213); 

                	newLeafNode(otherlv_0, grammarAccess.getStructAccess().getStructKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1023:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1024:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1024:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1025:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStruct2230); 

            			newLeafNode(lv_name_1_0, grammarAccess.getStructAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStructRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1041:2: (otherlv_2= 'xsd_all' )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==32) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1041:4: otherlv_2= 'xsd_all'
                    {
                    otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleStruct2248); 

                        	newLeafNode(otherlv_2, grammarAccess.getStructAccess().getXsd_allKeyword_2());
                        

                    }
                    break;

            }

            otherlv_3=(Token)match(input,28,FOLLOW_28_in_ruleStruct2262); 

                	newLeafNode(otherlv_3, grammarAccess.getStructAccess().getLeftCurlyBracketKeyword_3());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1049:1: ( (lv_fields_4_0= ruleField ) )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( ((LA17_0>=RULE_ID && LA17_0<=RULE_LONG)||(LA17_0>=41 && LA17_0<=42)||LA17_0==46||(LA17_0>=49 && LA17_0<=50)||(LA17_0>=56 && LA17_0<=64)) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1050:1: (lv_fields_4_0= ruleField )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1050:1: (lv_fields_4_0= ruleField )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1051:3: lv_fields_4_0= ruleField
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getStructAccess().getFieldsFieldParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleField_in_ruleStruct2283);
            	    lv_fields_4_0=ruleField();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getStructRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_4_0, 
            	            		"Field");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);

            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleStruct2296); 

                	newLeafNode(otherlv_5, grammarAccess.getStructAccess().getRightCurlyBracketKeyword_5());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1071:1: ( (lv_annotation_6_0= ruleAnnotation ) )?
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==24) ) {
                alt18=1;
            }
            switch (alt18) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1072:1: (lv_annotation_6_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1072:1: (lv_annotation_6_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1073:3: lv_annotation_6_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getStructAccess().getAnnotationAnnotationParserRuleCall_6_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleStruct2317);
                    lv_annotation_6_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStructRule());
                    	        }
                           		set(
                           			current, 
                           			"annotation",
                            		lv_annotation_6_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStruct"


    // $ANTLR start "entryRuleUnion"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1097:1: entryRuleUnion returns [EObject current=null] : iv_ruleUnion= ruleUnion EOF ;
    public final EObject entryRuleUnion() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnion = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1098:2: (iv_ruleUnion= ruleUnion EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1099:2: iv_ruleUnion= ruleUnion EOF
            {
             newCompositeNode(grammarAccess.getUnionRule()); 
            pushFollow(FOLLOW_ruleUnion_in_entryRuleUnion2354);
            iv_ruleUnion=ruleUnion();

            state._fsp--;

             current =iv_ruleUnion; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnion2364); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnion"


    // $ANTLR start "ruleUnion"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1106:1: ruleUnion returns [EObject current=null] : (otherlv_0= 'union' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ) ;
    public final EObject ruleUnion() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_fields_4_0 = null;

        EObject lv_annotation_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1109:28: ( (otherlv_0= 'union' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1110:1: (otherlv_0= 'union' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1110:1: (otherlv_0= 'union' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1110:3: otherlv_0= 'union' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'xsd_all' )? otherlv_3= '{' ( (lv_fields_4_0= ruleField ) )* otherlv_5= '}' ( (lv_annotation_6_0= ruleAnnotation ) )?
            {
            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleUnion2401); 

                	newLeafNode(otherlv_0, grammarAccess.getUnionAccess().getUnionKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1114:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1115:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1115:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1116:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleUnion2418); 

            			newLeafNode(lv_name_1_0, grammarAccess.getUnionAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getUnionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1132:2: (otherlv_2= 'xsd_all' )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==32) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1132:4: otherlv_2= 'xsd_all'
                    {
                    otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleUnion2436); 

                        	newLeafNode(otherlv_2, grammarAccess.getUnionAccess().getXsd_allKeyword_2());
                        

                    }
                    break;

            }

            otherlv_3=(Token)match(input,28,FOLLOW_28_in_ruleUnion2450); 

                	newLeafNode(otherlv_3, grammarAccess.getUnionAccess().getLeftCurlyBracketKeyword_3());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1140:1: ( (lv_fields_4_0= ruleField ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( ((LA20_0>=RULE_ID && LA20_0<=RULE_LONG)||(LA20_0>=41 && LA20_0<=42)||LA20_0==46||(LA20_0>=49 && LA20_0<=50)||(LA20_0>=56 && LA20_0<=64)) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1141:1: (lv_fields_4_0= ruleField )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1141:1: (lv_fields_4_0= ruleField )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1142:3: lv_fields_4_0= ruleField
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getUnionAccess().getFieldsFieldParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleField_in_ruleUnion2471);
            	    lv_fields_4_0=ruleField();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getUnionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_4_0, 
            	            		"Field");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);

            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleUnion2484); 

                	newLeafNode(otherlv_5, grammarAccess.getUnionAccess().getRightCurlyBracketKeyword_5());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1162:1: ( (lv_annotation_6_0= ruleAnnotation ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==24) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1163:1: (lv_annotation_6_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1163:1: (lv_annotation_6_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1164:3: lv_annotation_6_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getUnionAccess().getAnnotationAnnotationParserRuleCall_6_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleUnion2505);
                    lv_annotation_6_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getUnionRule());
                    	        }
                           		set(
                           			current, 
                           			"annotation",
                            		lv_annotation_6_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnion"


    // $ANTLR start "entryRuleException"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1188:1: entryRuleException returns [EObject current=null] : iv_ruleException= ruleException EOF ;
    public final EObject entryRuleException() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleException = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1189:2: (iv_ruleException= ruleException EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1190:2: iv_ruleException= ruleException EOF
            {
             newCompositeNode(grammarAccess.getExceptionRule()); 
            pushFollow(FOLLOW_ruleException_in_entryRuleException2542);
            iv_ruleException=ruleException();

            state._fsp--;

             current =iv_ruleException; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleException2552); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleException"


    // $ANTLR start "ruleException"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1197:1: ruleException returns [EObject current=null] : (otherlv_0= 'exception' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' ) ;
    public final EObject ruleException() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_fields_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1200:28: ( (otherlv_0= 'exception' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1201:1: (otherlv_0= 'exception' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1201:1: (otherlv_0= 'exception' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1201:3: otherlv_0= 'exception' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_fields_3_0= ruleField ) )* otherlv_4= '}'
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleException2589); 

                	newLeafNode(otherlv_0, grammarAccess.getExceptionAccess().getExceptionKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1205:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1206:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1206:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1207:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleException2606); 

            			newLeafNode(lv_name_1_0, grammarAccess.getExceptionAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getExceptionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleException2623); 

                	newLeafNode(otherlv_2, grammarAccess.getExceptionAccess().getLeftCurlyBracketKeyword_2());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1227:1: ( (lv_fields_3_0= ruleField ) )*
            loop22:
            do {
                int alt22=2;
                int LA22_0 = input.LA(1);

                if ( ((LA22_0>=RULE_ID && LA22_0<=RULE_LONG)||(LA22_0>=41 && LA22_0<=42)||LA22_0==46||(LA22_0>=49 && LA22_0<=50)||(LA22_0>=56 && LA22_0<=64)) ) {
                    alt22=1;
                }


                switch (alt22) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1228:1: (lv_fields_3_0= ruleField )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1228:1: (lv_fields_3_0= ruleField )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1229:3: lv_fields_3_0= ruleField
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getExceptionAccess().getFieldsFieldParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleField_in_ruleException2644);
            	    lv_fields_3_0=ruleField();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getExceptionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_3_0, 
            	            		"Field");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop22;
                }
            } while (true);

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleException2657); 

                	newLeafNode(otherlv_4, grammarAccess.getExceptionAccess().getRightCurlyBracketKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleException"


    // $ANTLR start "entryRuleService"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1257:1: entryRuleService returns [EObject current=null] : iv_ruleService= ruleService EOF ;
    public final EObject entryRuleService() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleService = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1258:2: (iv_ruleService= ruleService EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1259:2: iv_ruleService= ruleService EOF
            {
             newCompositeNode(grammarAccess.getServiceRule()); 
            pushFollow(FOLLOW_ruleService_in_entryRuleService2693);
            iv_ruleService=ruleService();

            state._fsp--;

             current =iv_ruleService; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleService2703); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleService"


    // $ANTLR start "ruleService"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1266:1: ruleService returns [EObject current=null] : (otherlv_0= 'service' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (lv_superType_3_0= ruleServiceRef ) ) )? otherlv_4= '{' ( (lv_functions_5_0= ruleFunction ) )* otherlv_6= '}' ) ;
    public final EObject ruleService() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_superType_3_0 = null;

        EObject lv_functions_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1269:28: ( (otherlv_0= 'service' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (lv_superType_3_0= ruleServiceRef ) ) )? otherlv_4= '{' ( (lv_functions_5_0= ruleFunction ) )* otherlv_6= '}' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1270:1: (otherlv_0= 'service' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (lv_superType_3_0= ruleServiceRef ) ) )? otherlv_4= '{' ( (lv_functions_5_0= ruleFunction ) )* otherlv_6= '}' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1270:1: (otherlv_0= 'service' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (lv_superType_3_0= ruleServiceRef ) ) )? otherlv_4= '{' ( (lv_functions_5_0= ruleFunction ) )* otherlv_6= '}' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1270:3: otherlv_0= 'service' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= 'extends' ( (lv_superType_3_0= ruleServiceRef ) ) )? otherlv_4= '{' ( (lv_functions_5_0= ruleFunction ) )* otherlv_6= '}'
            {
            otherlv_0=(Token)match(input,35,FOLLOW_35_in_ruleService2740); 

                	newLeafNode(otherlv_0, grammarAccess.getServiceAccess().getServiceKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1274:1: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1275:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1275:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1276:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleService2757); 

            			newLeafNode(lv_name_1_0, grammarAccess.getServiceAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getServiceRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1292:2: (otherlv_2= 'extends' ( (lv_superType_3_0= ruleServiceRef ) ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==36) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1292:4: otherlv_2= 'extends' ( (lv_superType_3_0= ruleServiceRef ) )
                    {
                    otherlv_2=(Token)match(input,36,FOLLOW_36_in_ruleService2775); 

                        	newLeafNode(otherlv_2, grammarAccess.getServiceAccess().getExtendsKeyword_2_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1296:1: ( (lv_superType_3_0= ruleServiceRef ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1297:1: (lv_superType_3_0= ruleServiceRef )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1297:1: (lv_superType_3_0= ruleServiceRef )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1298:3: lv_superType_3_0= ruleServiceRef
                    {
                     
                    	        newCompositeNode(grammarAccess.getServiceAccess().getSuperTypeServiceRefParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleServiceRef_in_ruleService2796);
                    lv_superType_3_0=ruleServiceRef();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getServiceRule());
                    	        }
                           		set(
                           			current, 
                           			"superType",
                            		lv_superType_3_0, 
                            		"ServiceRef");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,28,FOLLOW_28_in_ruleService2810); 

                	newLeafNode(otherlv_4, grammarAccess.getServiceAccess().getLeftCurlyBracketKeyword_3());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1318:1: ( (lv_functions_5_0= ruleFunction ) )*
            loop24:
            do {
                int alt24=2;
                int LA24_0 = input.LA(1);

                if ( (LA24_0==RULE_ID||(LA24_0>=43 && LA24_0<=44)||LA24_0==46||(LA24_0>=49 && LA24_0<=50)||(LA24_0>=56 && LA24_0<=64)) ) {
                    alt24=1;
                }


                switch (alt24) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1319:1: (lv_functions_5_0= ruleFunction )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1319:1: (lv_functions_5_0= ruleFunction )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1320:3: lv_functions_5_0= ruleFunction
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getServiceAccess().getFunctionsFunctionParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleFunction_in_ruleService2831);
            	    lv_functions_5_0=ruleFunction();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getServiceRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"functions",
            	            		lv_functions_5_0, 
            	            		"Function");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop24;
                }
            } while (true);

            otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleService2844); 

                	newLeafNode(otherlv_6, grammarAccess.getServiceAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleService"


    // $ANTLR start "entryRuleServiceRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1348:1: entryRuleServiceRef returns [EObject current=null] : iv_ruleServiceRef= ruleServiceRef EOF ;
    public final EObject entryRuleServiceRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleServiceRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1349:2: (iv_ruleServiceRef= ruleServiceRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1350:2: iv_ruleServiceRef= ruleServiceRef EOF
            {
             newCompositeNode(grammarAccess.getServiceRefRule()); 
            pushFollow(FOLLOW_ruleServiceRef_in_entryRuleServiceRef2880);
            iv_ruleServiceRef=ruleServiceRef();

            state._fsp--;

             current =iv_ruleServiceRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleServiceRef2890); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleServiceRef"


    // $ANTLR start "ruleServiceRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1357:1: ruleServiceRef returns [EObject current=null] : ( ( ruleQualifiedName ) ) ;
    public final EObject ruleServiceRef() throws RecognitionException {
        EObject current = null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1360:28: ( ( ( ruleQualifiedName ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1361:1: ( ( ruleQualifiedName ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1361:1: ( ( ruleQualifiedName ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1362:1: ( ruleQualifiedName )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1362:1: ( ruleQualifiedName )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1363:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getServiceRefRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getServiceRefAccess().getServiceServiceCrossReference_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleServiceRef2937);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleServiceRef"


    // $ANTLR start "entryRuleField"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1384:1: entryRuleField returns [EObject current=null] : iv_ruleField= ruleField EOF ;
    public final EObject entryRuleField() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleField = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1385:2: (iv_ruleField= ruleField EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1386:2: iv_ruleField= ruleField EOF
            {
             newCompositeNode(grammarAccess.getFieldRule()); 
            pushFollow(FOLLOW_ruleField_in_entryRuleField2972);
            iv_ruleField=ruleField();

            state._fsp--;

             current =iv_ruleField; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleField2982); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleField"


    // $ANTLR start "ruleField"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1393:1: ruleField returns [EObject current=null] : ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (lv_fieldReq_1_0= ruleFieldReq ) )? ( (lv_type_2_0= ruleFieldType ) ) ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleConstValue ) ) )? ( (lv_annotation_6_0= ruleAnnotation ) )? ( (otherlv_7= 'xsd_optional' )? (otherlv_8= 'xsd_nillable' )? (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )? ) ( ruleListSeparator )? ) ;
    public final EObject ruleField() throws RecognitionException {
        EObject current = null;

        Token lv_name_3_0=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        AntlrDatatypeRuleToken lv_fieldId_0_0 = null;

        AntlrDatatypeRuleToken lv_fieldReq_1_0 = null;

        EObject lv_type_2_0 = null;

        EObject lv_value_5_0 = null;

        EObject lv_annotation_6_0 = null;

        EObject lv_fields_11_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1396:28: ( ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (lv_fieldReq_1_0= ruleFieldReq ) )? ( (lv_type_2_0= ruleFieldType ) ) ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleConstValue ) ) )? ( (lv_annotation_6_0= ruleAnnotation ) )? ( (otherlv_7= 'xsd_optional' )? (otherlv_8= 'xsd_nillable' )? (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )? ) ( ruleListSeparator )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1397:1: ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (lv_fieldReq_1_0= ruleFieldReq ) )? ( (lv_type_2_0= ruleFieldType ) ) ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleConstValue ) ) )? ( (lv_annotation_6_0= ruleAnnotation ) )? ( (otherlv_7= 'xsd_optional' )? (otherlv_8= 'xsd_nillable' )? (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )? ) ( ruleListSeparator )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1397:1: ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (lv_fieldReq_1_0= ruleFieldReq ) )? ( (lv_type_2_0= ruleFieldType ) ) ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleConstValue ) ) )? ( (lv_annotation_6_0= ruleAnnotation ) )? ( (otherlv_7= 'xsd_optional' )? (otherlv_8= 'xsd_nillable' )? (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )? ) ( ruleListSeparator )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1397:2: ( (lv_fieldId_0_0= ruleFieldID ) )? ( (lv_fieldReq_1_0= ruleFieldReq ) )? ( (lv_type_2_0= ruleFieldType ) ) ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '=' ( (lv_value_5_0= ruleConstValue ) ) )? ( (lv_annotation_6_0= ruleAnnotation ) )? ( (otherlv_7= 'xsd_optional' )? (otherlv_8= 'xsd_nillable' )? (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )? ) ( ruleListSeparator )?
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1397:2: ( (lv_fieldId_0_0= ruleFieldID ) )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==RULE_LONG) ) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1398:1: (lv_fieldId_0_0= ruleFieldID )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1398:1: (lv_fieldId_0_0= ruleFieldID )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1399:3: lv_fieldId_0_0= ruleFieldID
                    {
                     
                    	        newCompositeNode(grammarAccess.getFieldAccess().getFieldIdFieldIDParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFieldID_in_ruleField3028);
                    lv_fieldId_0_0=ruleFieldID();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFieldRule());
                    	        }
                           		set(
                           			current, 
                           			"fieldId",
                            		lv_fieldId_0_0, 
                            		"FieldID");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1415:3: ( (lv_fieldReq_1_0= ruleFieldReq ) )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( ((LA26_0>=41 && LA26_0<=42)) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1416:1: (lv_fieldReq_1_0= ruleFieldReq )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1416:1: (lv_fieldReq_1_0= ruleFieldReq )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1417:3: lv_fieldReq_1_0= ruleFieldReq
                    {
                     
                    	        newCompositeNode(grammarAccess.getFieldAccess().getFieldReqFieldReqParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFieldReq_in_ruleField3050);
                    lv_fieldReq_1_0=ruleFieldReq();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFieldRule());
                    	        }
                           		set(
                           			current, 
                           			"fieldReq",
                            		lv_fieldReq_1_0, 
                            		"FieldReq");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1433:3: ( (lv_type_2_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1434:1: (lv_type_2_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1434:1: (lv_type_2_0= ruleFieldType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1435:3: lv_type_2_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getFieldAccess().getTypeFieldTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleField3072);
            lv_type_2_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFieldRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1451:2: ( (lv_name_3_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1452:1: (lv_name_3_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1452:1: (lv_name_3_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1453:3: lv_name_3_0= RULE_ID
            {
            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleField3089); 

            			newLeafNode(lv_name_3_0, grammarAccess.getFieldAccess().getNameIDTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFieldRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_3_0, 
                    		"ID");
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1469:2: (otherlv_4= '=' ( (lv_value_5_0= ruleConstValue ) ) )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==22) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1469:4: otherlv_4= '=' ( (lv_value_5_0= ruleConstValue ) )
                    {
                    otherlv_4=(Token)match(input,22,FOLLOW_22_in_ruleField3107); 

                        	newLeafNode(otherlv_4, grammarAccess.getFieldAccess().getEqualsSignKeyword_4_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1473:1: ( (lv_value_5_0= ruleConstValue ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1474:1: (lv_value_5_0= ruleConstValue )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1474:1: (lv_value_5_0= ruleConstValue )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1475:3: lv_value_5_0= ruleConstValue
                    {
                     
                    	        newCompositeNode(grammarAccess.getFieldAccess().getValueConstValueParserRuleCall_4_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleConstValue_in_ruleField3128);
                    lv_value_5_0=ruleConstValue();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFieldRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_5_0, 
                            		"ConstValue");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1491:4: ( (lv_annotation_6_0= ruleAnnotation ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==24) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1492:1: (lv_annotation_6_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1492:1: (lv_annotation_6_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1493:3: lv_annotation_6_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getFieldAccess().getAnnotationAnnotationParserRuleCall_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleField3151);
                    lv_annotation_6_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFieldRule());
                    	        }
                           		set(
                           			current, 
                           			"annotation",
                            		lv_annotation_6_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1509:3: ( (otherlv_7= 'xsd_optional' )? (otherlv_8= 'xsd_nillable' )? (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1509:4: (otherlv_7= 'xsd_optional' )? (otherlv_8= 'xsd_nillable' )? (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )?
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1509:4: (otherlv_7= 'xsd_optional' )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==37) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1509:6: otherlv_7= 'xsd_optional'
                    {
                    otherlv_7=(Token)match(input,37,FOLLOW_37_in_ruleField3166); 

                        	newLeafNode(otherlv_7, grammarAccess.getFieldAccess().getXsd_optionalKeyword_6_0());
                        

                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1513:3: (otherlv_8= 'xsd_nillable' )?
            int alt30=2;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==38) ) {
                alt30=1;
            }
            switch (alt30) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1513:5: otherlv_8= 'xsd_nillable'
                    {
                    otherlv_8=(Token)match(input,38,FOLLOW_38_in_ruleField3181); 

                        	newLeafNode(otherlv_8, grammarAccess.getFieldAccess().getXsd_nillableKeyword_6_1());
                        

                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1517:3: (otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}' )?
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==39) ) {
                alt32=1;
            }
            switch (alt32) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1517:5: otherlv_9= 'xsd_attrs' otherlv_10= '{' ( (lv_fields_11_0= ruleField ) )* otherlv_12= '}'
                    {
                    otherlv_9=(Token)match(input,39,FOLLOW_39_in_ruleField3196); 

                        	newLeafNode(otherlv_9, grammarAccess.getFieldAccess().getXsd_attrsKeyword_6_2_0());
                        
                    otherlv_10=(Token)match(input,28,FOLLOW_28_in_ruleField3208); 

                        	newLeafNode(otherlv_10, grammarAccess.getFieldAccess().getLeftCurlyBracketKeyword_6_2_1());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1525:1: ( (lv_fields_11_0= ruleField ) )*
                    loop31:
                    do {
                        int alt31=2;
                        int LA31_0 = input.LA(1);

                        if ( ((LA31_0>=RULE_ID && LA31_0<=RULE_LONG)||(LA31_0>=41 && LA31_0<=42)||LA31_0==46||(LA31_0>=49 && LA31_0<=50)||(LA31_0>=56 && LA31_0<=64)) ) {
                            alt31=1;
                        }


                        switch (alt31) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1526:1: (lv_fields_11_0= ruleField )
                    	    {
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1526:1: (lv_fields_11_0= ruleField )
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1527:3: lv_fields_11_0= ruleField
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getFieldAccess().getFieldsFieldParserRuleCall_6_2_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleField_in_ruleField3229);
                    	    lv_fields_11_0=ruleField();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getFieldRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"fields",
                    	            		lv_fields_11_0, 
                    	            		"Field");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop31;
                        }
                    } while (true);

                    otherlv_12=(Token)match(input,29,FOLLOW_29_in_ruleField3242); 

                        	newLeafNode(otherlv_12, grammarAccess.getFieldAccess().getRightCurlyBracketKeyword_6_2_3());
                        

                    }
                    break;

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1547:4: ( ruleListSeparator )?
            int alt33=2;
            int LA33_0 = input.LA(1);

            if ( (LA33_0==25||LA33_0==54) ) {
                alt33=1;
            }
            switch (alt33) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1548:5: ruleListSeparator
                    {
                     
                            newCompositeNode(grammarAccess.getFieldAccess().getListSeparatorParserRuleCall_7()); 
                        
                    pushFollow(FOLLOW_ruleListSeparator_in_ruleField3262);
                    ruleListSeparator();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleField"


    // $ANTLR start "entryRuleFieldID"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1563:1: entryRuleFieldID returns [String current=null] : iv_ruleFieldID= ruleFieldID EOF ;
    public final String entryRuleFieldID() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleFieldID = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1564:2: (iv_ruleFieldID= ruleFieldID EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1565:2: iv_ruleFieldID= ruleFieldID EOF
            {
             newCompositeNode(grammarAccess.getFieldIDRule()); 
            pushFollow(FOLLOW_ruleFieldID_in_entryRuleFieldID3300);
            iv_ruleFieldID=ruleFieldID();

            state._fsp--;

             current =iv_ruleFieldID.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFieldID3311); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFieldID"


    // $ANTLR start "ruleFieldID"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1572:1: ruleFieldID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_LONG_0= RULE_LONG kw= ':' ) ;
    public final AntlrDatatypeRuleToken ruleFieldID() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_LONG_0=null;
        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1575:28: ( (this_LONG_0= RULE_LONG kw= ':' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1576:1: (this_LONG_0= RULE_LONG kw= ':' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1576:1: (this_LONG_0= RULE_LONG kw= ':' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1576:6: this_LONG_0= RULE_LONG kw= ':'
            {
            this_LONG_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleFieldID3351); 

            		current.merge(this_LONG_0);
                
             
                newLeafNode(this_LONG_0, grammarAccess.getFieldIDAccess().getLONGTerminalRuleCall_0()); 
                
            kw=(Token)match(input,40,FOLLOW_40_in_ruleFieldID3369); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getFieldIDAccess().getColonKeyword_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFieldID"


    // $ANTLR start "entryRuleFieldReq"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1597:1: entryRuleFieldReq returns [String current=null] : iv_ruleFieldReq= ruleFieldReq EOF ;
    public final String entryRuleFieldReq() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleFieldReq = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1598:2: (iv_ruleFieldReq= ruleFieldReq EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1599:2: iv_ruleFieldReq= ruleFieldReq EOF
            {
             newCompositeNode(grammarAccess.getFieldReqRule()); 
            pushFollow(FOLLOW_ruleFieldReq_in_entryRuleFieldReq3410);
            iv_ruleFieldReq=ruleFieldReq();

            state._fsp--;

             current =iv_ruleFieldReq.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFieldReq3421); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFieldReq"


    // $ANTLR start "ruleFieldReq"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1606:1: ruleFieldReq returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'required' | kw= 'optional' ) ;
    public final AntlrDatatypeRuleToken ruleFieldReq() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1609:28: ( (kw= 'required' | kw= 'optional' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1610:1: (kw= 'required' | kw= 'optional' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1610:1: (kw= 'required' | kw= 'optional' )
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==41) ) {
                alt34=1;
            }
            else if ( (LA34_0==42) ) {
                alt34=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 34, 0, input);

                throw nvae;
            }
            switch (alt34) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1611:2: kw= 'required'
                    {
                    kw=(Token)match(input,41,FOLLOW_41_in_ruleFieldReq3459); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFieldReqAccess().getRequiredKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1618:2: kw= 'optional'
                    {
                    kw=(Token)match(input,42,FOLLOW_42_in_ruleFieldReq3478); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFieldReqAccess().getOptionalKeyword_1()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFieldReq"


    // $ANTLR start "entryRuleFunction"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1631:1: entryRuleFunction returns [EObject current=null] : iv_ruleFunction= ruleFunction EOF ;
    public final EObject entryRuleFunction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunction = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1632:2: (iv_ruleFunction= ruleFunction EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1633:2: iv_ruleFunction= ruleFunction EOF
            {
             newCompositeNode(grammarAccess.getFunctionRule()); 
            pushFollow(FOLLOW_ruleFunction_in_entryRuleFunction3518);
            iv_ruleFunction=ruleFunction();

            state._fsp--;

             current =iv_ruleFunction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunction3528); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunction"


    // $ANTLR start "ruleFunction"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1640:1: ruleFunction returns [EObject current=null] : ( ( (lv_functionType_0_0= ruleFunctionType ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_fields_3_0= ruleField ) )* otherlv_4= ')' ( (lv_throwsDecl_5_0= ruleThrows ) )? ( ruleListSeparator )? ) ;
    public final EObject ruleFunction() throws RecognitionException {
        EObject current = null;

        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_functionType_0_0 = null;

        EObject lv_fields_3_0 = null;

        EObject lv_throwsDecl_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1643:28: ( ( ( (lv_functionType_0_0= ruleFunctionType ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_fields_3_0= ruleField ) )* otherlv_4= ')' ( (lv_throwsDecl_5_0= ruleThrows ) )? ( ruleListSeparator )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1644:1: ( ( (lv_functionType_0_0= ruleFunctionType ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_fields_3_0= ruleField ) )* otherlv_4= ')' ( (lv_throwsDecl_5_0= ruleThrows ) )? ( ruleListSeparator )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1644:1: ( ( (lv_functionType_0_0= ruleFunctionType ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_fields_3_0= ruleField ) )* otherlv_4= ')' ( (lv_throwsDecl_5_0= ruleThrows ) )? ( ruleListSeparator )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1644:2: ( (lv_functionType_0_0= ruleFunctionType ) ) ( (lv_name_1_0= RULE_ID ) ) otherlv_2= '(' ( (lv_fields_3_0= ruleField ) )* otherlv_4= ')' ( (lv_throwsDecl_5_0= ruleThrows ) )? ( ruleListSeparator )?
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1644:2: ( (lv_functionType_0_0= ruleFunctionType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1645:1: (lv_functionType_0_0= ruleFunctionType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1645:1: (lv_functionType_0_0= ruleFunctionType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1646:3: lv_functionType_0_0= ruleFunctionType
            {
             
            	        newCompositeNode(grammarAccess.getFunctionAccess().getFunctionTypeFunctionTypeParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleFunctionType_in_ruleFunction3574);
            lv_functionType_0_0=ruleFunctionType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFunctionRule());
            	        }
                   		set(
                   			current, 
                   			"functionType",
                    		lv_functionType_0_0, 
                    		"FunctionType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1662:2: ( (lv_name_1_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1663:1: (lv_name_1_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1663:1: (lv_name_1_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1664:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleFunction3591); 

            			newLeafNode(lv_name_1_0, grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getFunctionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleFunction3608); 

                	newLeafNode(otherlv_2, grammarAccess.getFunctionAccess().getLeftParenthesisKeyword_2());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1684:1: ( (lv_fields_3_0= ruleField ) )*
            loop35:
            do {
                int alt35=2;
                int LA35_0 = input.LA(1);

                if ( ((LA35_0>=RULE_ID && LA35_0<=RULE_LONG)||(LA35_0>=41 && LA35_0<=42)||LA35_0==46||(LA35_0>=49 && LA35_0<=50)||(LA35_0>=56 && LA35_0<=64)) ) {
                    alt35=1;
                }


                switch (alt35) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1685:1: (lv_fields_3_0= ruleField )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1685:1: (lv_fields_3_0= ruleField )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1686:3: lv_fields_3_0= ruleField
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFunctionAccess().getFieldsFieldParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleField_in_ruleFunction3629);
            	    lv_fields_3_0=ruleField();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_3_0, 
            	            		"Field");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop35;
                }
            } while (true);

            otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleFunction3642); 

                	newLeafNode(otherlv_4, grammarAccess.getFunctionAccess().getRightParenthesisKeyword_4());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1706:1: ( (lv_throwsDecl_5_0= ruleThrows ) )?
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==45) ) {
                alt36=1;
            }
            switch (alt36) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1707:1: (lv_throwsDecl_5_0= ruleThrows )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1707:1: (lv_throwsDecl_5_0= ruleThrows )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1708:3: lv_throwsDecl_5_0= ruleThrows
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunctionAccess().getThrowsDeclThrowsParserRuleCall_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleThrows_in_ruleFunction3663);
                    lv_throwsDecl_5_0=ruleThrows();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunctionRule());
                    	        }
                           		set(
                           			current, 
                           			"throwsDecl",
                            		lv_throwsDecl_5_0, 
                            		"Throws");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1724:3: ( ruleListSeparator )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==25||LA37_0==54) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1725:5: ruleListSeparator
                    {
                     
                            newCompositeNode(grammarAccess.getFunctionAccess().getListSeparatorParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_ruleListSeparator_in_ruleFunction3681);
                    ruleListSeparator();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunction"


    // $ANTLR start "entryRuleFunctionType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1740:1: entryRuleFunctionType returns [EObject current=null] : iv_ruleFunctionType= ruleFunctionType EOF ;
    public final EObject entryRuleFunctionType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunctionType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1741:2: (iv_ruleFunctionType= ruleFunctionType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1742:2: iv_ruleFunctionType= ruleFunctionType EOF
            {
             newCompositeNode(grammarAccess.getFunctionTypeRule()); 
            pushFollow(FOLLOW_ruleFunctionType_in_entryRuleFunctionType3718);
            iv_ruleFunctionType=ruleFunctionType();

            state._fsp--;

             current =iv_ruleFunctionType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionType3728); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunctionType"


    // $ANTLR start "ruleFunctionType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1749:1: ruleFunctionType returns [EObject current=null] : ( ( ( (lv_oneway_0_0= 'oneway' ) )? ( (lv_type_1_0= 'void' ) ) ) | this_FieldType_2= ruleFieldType ) ;
    public final EObject ruleFunctionType() throws RecognitionException {
        EObject current = null;

        Token lv_oneway_0_0=null;
        Token lv_type_1_0=null;
        EObject this_FieldType_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1752:28: ( ( ( ( (lv_oneway_0_0= 'oneway' ) )? ( (lv_type_1_0= 'void' ) ) ) | this_FieldType_2= ruleFieldType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1753:1: ( ( ( (lv_oneway_0_0= 'oneway' ) )? ( (lv_type_1_0= 'void' ) ) ) | this_FieldType_2= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1753:1: ( ( ( (lv_oneway_0_0= 'oneway' ) )? ( (lv_type_1_0= 'void' ) ) ) | this_FieldType_2= ruleFieldType )
            int alt39=2;
            int LA39_0 = input.LA(1);

            if ( ((LA39_0>=43 && LA39_0<=44)) ) {
                alt39=1;
            }
            else if ( (LA39_0==RULE_ID||LA39_0==46||(LA39_0>=49 && LA39_0<=50)||(LA39_0>=56 && LA39_0<=64)) ) {
                alt39=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 39, 0, input);

                throw nvae;
            }
            switch (alt39) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1753:2: ( ( (lv_oneway_0_0= 'oneway' ) )? ( (lv_type_1_0= 'void' ) ) )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1753:2: ( ( (lv_oneway_0_0= 'oneway' ) )? ( (lv_type_1_0= 'void' ) ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1753:3: ( (lv_oneway_0_0= 'oneway' ) )? ( (lv_type_1_0= 'void' ) )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1753:3: ( (lv_oneway_0_0= 'oneway' ) )?
                    int alt38=2;
                    int LA38_0 = input.LA(1);

                    if ( (LA38_0==43) ) {
                        alt38=1;
                    }
                    switch (alt38) {
                        case 1 :
                            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1754:1: (lv_oneway_0_0= 'oneway' )
                            {
                            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1754:1: (lv_oneway_0_0= 'oneway' )
                            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1755:3: lv_oneway_0_0= 'oneway'
                            {
                            lv_oneway_0_0=(Token)match(input,43,FOLLOW_43_in_ruleFunctionType3772); 

                                    newLeafNode(lv_oneway_0_0, grammarAccess.getFunctionTypeAccess().getOnewayOnewayKeyword_0_0_0());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                            	        }
                                   		setWithLastConsumed(current, "oneway", lv_oneway_0_0, "oneway");
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1768:3: ( (lv_type_1_0= 'void' ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1769:1: (lv_type_1_0= 'void' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1769:1: (lv_type_1_0= 'void' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1770:3: lv_type_1_0= 'void'
                    {
                    lv_type_1_0=(Token)match(input,44,FOLLOW_44_in_ruleFunctionType3804); 

                            newLeafNode(lv_type_1_0, grammarAccess.getFunctionTypeAccess().getTypeVoidKeyword_0_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFunctionTypeRule());
                    	        }
                           		setWithLastConsumed(current, "type", lv_type_1_0, "void");
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1785:5: this_FieldType_2= ruleFieldType
                    {
                     
                            newCompositeNode(grammarAccess.getFunctionTypeAccess().getFieldTypeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleFieldType_in_ruleFunctionType3846);
                    this_FieldType_2=ruleFieldType();

                    state._fsp--;

                     
                            current = this_FieldType_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunctionType"


    // $ANTLR start "entryRuleThrows"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1801:1: entryRuleThrows returns [EObject current=null] : iv_ruleThrows= ruleThrows EOF ;
    public final EObject entryRuleThrows() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleThrows = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1802:2: (iv_ruleThrows= ruleThrows EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1803:2: iv_ruleThrows= ruleThrows EOF
            {
             newCompositeNode(grammarAccess.getThrowsRule()); 
            pushFollow(FOLLOW_ruleThrows_in_entryRuleThrows3881);
            iv_ruleThrows=ruleThrows();

            state._fsp--;

             current =iv_ruleThrows; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleThrows3891); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleThrows"


    // $ANTLR start "ruleThrows"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1810:1: ruleThrows returns [EObject current=null] : (otherlv_0= 'throws' otherlv_1= '(' ( (lv_fields_2_0= ruleThrowsField ) ) (otherlv_3= ',' ( (lv_fields_4_0= ruleThrowsField ) ) )* otherlv_5= ')' ) ;
    public final EObject ruleThrows() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_fields_2_0 = null;

        EObject lv_fields_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1813:28: ( (otherlv_0= 'throws' otherlv_1= '(' ( (lv_fields_2_0= ruleThrowsField ) ) (otherlv_3= ',' ( (lv_fields_4_0= ruleThrowsField ) ) )* otherlv_5= ')' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1814:1: (otherlv_0= 'throws' otherlv_1= '(' ( (lv_fields_2_0= ruleThrowsField ) ) (otherlv_3= ',' ( (lv_fields_4_0= ruleThrowsField ) ) )* otherlv_5= ')' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1814:1: (otherlv_0= 'throws' otherlv_1= '(' ( (lv_fields_2_0= ruleThrowsField ) ) (otherlv_3= ',' ( (lv_fields_4_0= ruleThrowsField ) ) )* otherlv_5= ')' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1814:3: otherlv_0= 'throws' otherlv_1= '(' ( (lv_fields_2_0= ruleThrowsField ) ) (otherlv_3= ',' ( (lv_fields_4_0= ruleThrowsField ) ) )* otherlv_5= ')'
            {
            otherlv_0=(Token)match(input,45,FOLLOW_45_in_ruleThrows3928); 

                	newLeafNode(otherlv_0, grammarAccess.getThrowsAccess().getThrowsKeyword_0());
                
            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleThrows3940); 

                	newLeafNode(otherlv_1, grammarAccess.getThrowsAccess().getLeftParenthesisKeyword_1());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1822:1: ( (lv_fields_2_0= ruleThrowsField ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1823:1: (lv_fields_2_0= ruleThrowsField )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1823:1: (lv_fields_2_0= ruleThrowsField )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1824:3: lv_fields_2_0= ruleThrowsField
            {
             
            	        newCompositeNode(grammarAccess.getThrowsAccess().getFieldsThrowsFieldParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleThrowsField_in_ruleThrows3961);
            lv_fields_2_0=ruleThrowsField();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getThrowsRule());
            	        }
                   		add(
                   			current, 
                   			"fields",
                    		lv_fields_2_0, 
                    		"ThrowsField");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1840:2: (otherlv_3= ',' ( (lv_fields_4_0= ruleThrowsField ) ) )*
            loop40:
            do {
                int alt40=2;
                int LA40_0 = input.LA(1);

                if ( (LA40_0==25) ) {
                    alt40=1;
                }


                switch (alt40) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1840:4: otherlv_3= ',' ( (lv_fields_4_0= ruleThrowsField ) )
            	    {
            	    otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleThrows3974); 

            	        	newLeafNode(otherlv_3, grammarAccess.getThrowsAccess().getCommaKeyword_3_0());
            	        
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1844:1: ( (lv_fields_4_0= ruleThrowsField ) )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1845:1: (lv_fields_4_0= ruleThrowsField )
            	    {
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1845:1: (lv_fields_4_0= ruleThrowsField )
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1846:3: lv_fields_4_0= ruleThrowsField
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getThrowsAccess().getFieldsThrowsFieldParserRuleCall_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleThrowsField_in_ruleThrows3995);
            	    lv_fields_4_0=ruleThrowsField();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getThrowsRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"fields",
            	            		lv_fields_4_0, 
            	            		"ThrowsField");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop40;
                }
            } while (true);

            otherlv_5=(Token)match(input,26,FOLLOW_26_in_ruleThrows4009); 

                	newLeafNode(otherlv_5, grammarAccess.getThrowsAccess().getRightParenthesisKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleThrows"


    // $ANTLR start "entryRuleThrowsField"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1874:1: entryRuleThrowsField returns [EObject current=null] : iv_ruleThrowsField= ruleThrowsField EOF ;
    public final EObject entryRuleThrowsField() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleThrowsField = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1875:2: (iv_ruleThrowsField= ruleThrowsField EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1876:2: iv_ruleThrowsField= ruleThrowsField EOF
            {
             newCompositeNode(grammarAccess.getThrowsFieldRule()); 
            pushFollow(FOLLOW_ruleThrowsField_in_entryRuleThrowsField4045);
            iv_ruleThrowsField=ruleThrowsField();

            state._fsp--;

             current =iv_ruleThrowsField; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleThrowsField4055); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleThrowsField"


    // $ANTLR start "ruleThrowsField"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1883:1: ruleThrowsField returns [EObject current=null] : ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ruleListSeparator )? ) ;
    public final EObject ruleThrowsField() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        AntlrDatatypeRuleToken lv_fieldId_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1886:28: ( ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ruleListSeparator )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1887:1: ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ruleListSeparator )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1887:1: ( ( (lv_fieldId_0_0= ruleFieldID ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ruleListSeparator )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1887:2: ( (lv_fieldId_0_0= ruleFieldID ) )? ( (otherlv_1= RULE_ID ) ) ( (lv_name_2_0= RULE_ID ) ) ( ruleListSeparator )?
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1887:2: ( (lv_fieldId_0_0= ruleFieldID ) )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==RULE_LONG) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1888:1: (lv_fieldId_0_0= ruleFieldID )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1888:1: (lv_fieldId_0_0= ruleFieldID )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1889:3: lv_fieldId_0_0= ruleFieldID
                    {
                     
                    	        newCompositeNode(grammarAccess.getThrowsFieldAccess().getFieldIdFieldIDParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFieldID_in_ruleThrowsField4101);
                    lv_fieldId_0_0=ruleFieldID();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getThrowsFieldRule());
                    	        }
                           		set(
                           			current, 
                           			"fieldId",
                            		lv_fieldId_0_0, 
                            		"FieldID");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1905:3: ( (otherlv_1= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1906:1: (otherlv_1= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1906:1: (otherlv_1= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1907:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getThrowsFieldRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleThrowsField4122); 

            		newLeafNode(otherlv_1, grammarAccess.getThrowsFieldAccess().getTypeExceptionCrossReference_1_0()); 
            	

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1918:2: ( (lv_name_2_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1919:1: (lv_name_2_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1919:1: (lv_name_2_0= RULE_ID )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1920:3: lv_name_2_0= RULE_ID
            {
            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleThrowsField4139); 

            			newLeafNode(lv_name_2_0, grammarAccess.getThrowsFieldAccess().getNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getThrowsFieldRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_2_0, 
                    		"ID");
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1936:2: ( ruleListSeparator )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==25) ) {
                int LA42_1 = input.LA(2);

                if ( (LA42_1==EOF||(LA42_1>=25 && LA42_1<=26)) ) {
                    alt42=1;
                }
            }
            else if ( (LA42_0==54) ) {
                alt42=1;
            }
            switch (alt42) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1937:5: ruleListSeparator
                    {
                     
                            newCompositeNode(grammarAccess.getThrowsFieldAccess().getListSeparatorParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleListSeparator_in_ruleThrowsField4161);
                    ruleListSeparator();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleThrowsField"


    // $ANTLR start "entryRuleFieldType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1952:1: entryRuleFieldType returns [EObject current=null] : iv_ruleFieldType= ruleFieldType EOF ;
    public final EObject entryRuleFieldType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFieldType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1953:2: (iv_ruleFieldType= ruleFieldType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1954:2: iv_ruleFieldType= ruleFieldType EOF
            {
             newCompositeNode(grammarAccess.getFieldTypeRule()); 
            pushFollow(FOLLOW_ruleFieldType_in_entryRuleFieldType4198);
            iv_ruleFieldType=ruleFieldType();

            state._fsp--;

             current =iv_ruleFieldType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFieldType4208); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFieldType"


    // $ANTLR start "ruleFieldType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1961:1: ruleFieldType returns [EObject current=null] : (this_DefinitionRef_0= ruleDefinitionRef | this_BaseTypeRef_1= ruleBaseTypeRef | this_ContainerTypeRef_2= ruleContainerTypeRef ) ;
    public final EObject ruleFieldType() throws RecognitionException {
        EObject current = null;

        EObject this_DefinitionRef_0 = null;

        EObject this_BaseTypeRef_1 = null;

        EObject this_ContainerTypeRef_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1964:28: ( (this_DefinitionRef_0= ruleDefinitionRef | this_BaseTypeRef_1= ruleBaseTypeRef | this_ContainerTypeRef_2= ruleContainerTypeRef ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1965:1: (this_DefinitionRef_0= ruleDefinitionRef | this_BaseTypeRef_1= ruleBaseTypeRef | this_ContainerTypeRef_2= ruleContainerTypeRef )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1965:1: (this_DefinitionRef_0= ruleDefinitionRef | this_BaseTypeRef_1= ruleBaseTypeRef | this_ContainerTypeRef_2= ruleContainerTypeRef )
            int alt43=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt43=1;
                }
                break;
            case 56:
            case 57:
            case 58:
            case 59:
            case 60:
            case 61:
            case 62:
            case 63:
            case 64:
                {
                alt43=2;
                }
                break;
            case 46:
            case 49:
            case 50:
                {
                alt43=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 43, 0, input);

                throw nvae;
            }

            switch (alt43) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1966:5: this_DefinitionRef_0= ruleDefinitionRef
                    {
                     
                            newCompositeNode(grammarAccess.getFieldTypeAccess().getDefinitionRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleDefinitionRef_in_ruleFieldType4255);
                    this_DefinitionRef_0=ruleDefinitionRef();

                    state._fsp--;

                     
                            current = this_DefinitionRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1976:5: this_BaseTypeRef_1= ruleBaseTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getFieldTypeAccess().getBaseTypeRefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleBaseTypeRef_in_ruleFieldType4282);
                    this_BaseTypeRef_1=ruleBaseTypeRef();

                    state._fsp--;

                     
                            current = this_BaseTypeRef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:1986:5: this_ContainerTypeRef_2= ruleContainerTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getFieldTypeAccess().getContainerTypeRefParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleContainerTypeRef_in_ruleFieldType4309);
                    this_ContainerTypeRef_2=ruleContainerTypeRef();

                    state._fsp--;

                     
                            current = this_ContainerTypeRef_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFieldType"


    // $ANTLR start "entryRuleDefinitionType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2002:1: entryRuleDefinitionType returns [EObject current=null] : iv_ruleDefinitionType= ruleDefinitionType EOF ;
    public final EObject entryRuleDefinitionType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefinitionType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2003:2: (iv_ruleDefinitionType= ruleDefinitionType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2004:2: iv_ruleDefinitionType= ruleDefinitionType EOF
            {
             newCompositeNode(grammarAccess.getDefinitionTypeRule()); 
            pushFollow(FOLLOW_ruleDefinitionType_in_entryRuleDefinitionType4344);
            iv_ruleDefinitionType=ruleDefinitionType();

            state._fsp--;

             current =iv_ruleDefinitionType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinitionType4354); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefinitionType"


    // $ANTLR start "ruleDefinitionType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2011:1: ruleDefinitionType returns [EObject current=null] : (this_BaseTypeRef_0= ruleBaseTypeRef | this_ContainerTypeRef_1= ruleContainerTypeRef ) ;
    public final EObject ruleDefinitionType() throws RecognitionException {
        EObject current = null;

        EObject this_BaseTypeRef_0 = null;

        EObject this_ContainerTypeRef_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2014:28: ( (this_BaseTypeRef_0= ruleBaseTypeRef | this_ContainerTypeRef_1= ruleContainerTypeRef ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2015:1: (this_BaseTypeRef_0= ruleBaseTypeRef | this_ContainerTypeRef_1= ruleContainerTypeRef )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2015:1: (this_BaseTypeRef_0= ruleBaseTypeRef | this_ContainerTypeRef_1= ruleContainerTypeRef )
            int alt44=2;
            int LA44_0 = input.LA(1);

            if ( ((LA44_0>=56 && LA44_0<=64)) ) {
                alt44=1;
            }
            else if ( (LA44_0==46||(LA44_0>=49 && LA44_0<=50)) ) {
                alt44=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 44, 0, input);

                throw nvae;
            }
            switch (alt44) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2016:5: this_BaseTypeRef_0= ruleBaseTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionTypeAccess().getBaseTypeRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleBaseTypeRef_in_ruleDefinitionType4401);
                    this_BaseTypeRef_0=ruleBaseTypeRef();

                    state._fsp--;

                     
                            current = this_BaseTypeRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2026:5: this_ContainerTypeRef_1= ruleContainerTypeRef
                    {
                     
                            newCompositeNode(grammarAccess.getDefinitionTypeAccess().getContainerTypeRefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleContainerTypeRef_in_ruleDefinitionType4428);
                    this_ContainerTypeRef_1=ruleContainerTypeRef();

                    state._fsp--;

                     
                            current = this_ContainerTypeRef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefinitionType"


    // $ANTLR start "entryRuleContainerType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2042:1: entryRuleContainerType returns [EObject current=null] : iv_ruleContainerType= ruleContainerType EOF ;
    public final EObject entryRuleContainerType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainerType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2043:2: (iv_ruleContainerType= ruleContainerType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2044:2: iv_ruleContainerType= ruleContainerType EOF
            {
             newCompositeNode(grammarAccess.getContainerTypeRule()); 
            pushFollow(FOLLOW_ruleContainerType_in_entryRuleContainerType4463);
            iv_ruleContainerType=ruleContainerType();

            state._fsp--;

             current =iv_ruleContainerType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleContainerType4473); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContainerType"


    // $ANTLR start "ruleContainerType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2051:1: ruleContainerType returns [EObject current=null] : (this_MapType_0= ruleMapType | this_SetType_1= ruleSetType | this_ListType_2= ruleListType ) ;
    public final EObject ruleContainerType() throws RecognitionException {
        EObject current = null;

        EObject this_MapType_0 = null;

        EObject this_SetType_1 = null;

        EObject this_ListType_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2054:28: ( (this_MapType_0= ruleMapType | this_SetType_1= ruleSetType | this_ListType_2= ruleListType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2055:1: (this_MapType_0= ruleMapType | this_SetType_1= ruleSetType | this_ListType_2= ruleListType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2055:1: (this_MapType_0= ruleMapType | this_SetType_1= ruleSetType | this_ListType_2= ruleListType )
            int alt45=3;
            switch ( input.LA(1) ) {
            case 46:
                {
                alt45=1;
                }
                break;
            case 49:
                {
                alt45=2;
                }
                break;
            case 50:
                {
                alt45=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;
            }

            switch (alt45) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2056:5: this_MapType_0= ruleMapType
                    {
                     
                            newCompositeNode(grammarAccess.getContainerTypeAccess().getMapTypeParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleMapType_in_ruleContainerType4520);
                    this_MapType_0=ruleMapType();

                    state._fsp--;

                     
                            current = this_MapType_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2066:5: this_SetType_1= ruleSetType
                    {
                     
                            newCompositeNode(grammarAccess.getContainerTypeAccess().getSetTypeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleSetType_in_ruleContainerType4547);
                    this_SetType_1=ruleSetType();

                    state._fsp--;

                     
                            current = this_SetType_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2076:5: this_ListType_2= ruleListType
                    {
                     
                            newCompositeNode(grammarAccess.getContainerTypeAccess().getListTypeParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleListType_in_ruleContainerType4574);
                    this_ListType_2=ruleListType();

                    state._fsp--;

                     
                            current = this_ListType_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContainerType"


    // $ANTLR start "entryRuleMapType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2092:1: entryRuleMapType returns [EObject current=null] : iv_ruleMapType= ruleMapType EOF ;
    public final EObject entryRuleMapType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMapType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2093:2: (iv_ruleMapType= ruleMapType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2094:2: iv_ruleMapType= ruleMapType EOF
            {
             newCompositeNode(grammarAccess.getMapTypeRule()); 
            pushFollow(FOLLOW_ruleMapType_in_entryRuleMapType4609);
            iv_ruleMapType=ruleMapType();

            state._fsp--;

             current =iv_ruleMapType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMapType4619); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMapType"


    // $ANTLR start "ruleMapType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2101:1: ruleMapType returns [EObject current=null] : (otherlv_0= 'map' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_mapType1_3_0= ruleFieldType ) ) ( (lv_mapType1Annotation_4_0= ruleAnnotation ) )? otherlv_5= ',' ( (lv_mapType2_6_0= ruleFieldType ) ) ( (lv_mapType2Annotation_7_0= ruleAnnotation ) )? otherlv_8= '>' ) ;
    public final EObject ruleMapType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_cppType_1_0 = null;

        EObject lv_mapType1_3_0 = null;

        EObject lv_mapType1Annotation_4_0 = null;

        EObject lv_mapType2_6_0 = null;

        EObject lv_mapType2Annotation_7_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2104:28: ( (otherlv_0= 'map' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_mapType1_3_0= ruleFieldType ) ) ( (lv_mapType1Annotation_4_0= ruleAnnotation ) )? otherlv_5= ',' ( (lv_mapType2_6_0= ruleFieldType ) ) ( (lv_mapType2Annotation_7_0= ruleAnnotation ) )? otherlv_8= '>' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2105:1: (otherlv_0= 'map' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_mapType1_3_0= ruleFieldType ) ) ( (lv_mapType1Annotation_4_0= ruleAnnotation ) )? otherlv_5= ',' ( (lv_mapType2_6_0= ruleFieldType ) ) ( (lv_mapType2Annotation_7_0= ruleAnnotation ) )? otherlv_8= '>' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2105:1: (otherlv_0= 'map' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_mapType1_3_0= ruleFieldType ) ) ( (lv_mapType1Annotation_4_0= ruleAnnotation ) )? otherlv_5= ',' ( (lv_mapType2_6_0= ruleFieldType ) ) ( (lv_mapType2Annotation_7_0= ruleAnnotation ) )? otherlv_8= '>' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2105:3: otherlv_0= 'map' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_mapType1_3_0= ruleFieldType ) ) ( (lv_mapType1Annotation_4_0= ruleAnnotation ) )? otherlv_5= ',' ( (lv_mapType2_6_0= ruleFieldType ) ) ( (lv_mapType2Annotation_7_0= ruleAnnotation ) )? otherlv_8= '>'
            {
            otherlv_0=(Token)match(input,46,FOLLOW_46_in_ruleMapType4656); 

                	newLeafNode(otherlv_0, grammarAccess.getMapTypeAccess().getMapKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2109:1: ( (lv_cppType_1_0= ruleCppType ) )?
            int alt46=2;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==51) ) {
                alt46=1;
            }
            switch (alt46) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2110:1: (lv_cppType_1_0= ruleCppType )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2110:1: (lv_cppType_1_0= ruleCppType )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2111:3: lv_cppType_1_0= ruleCppType
                    {
                     
                    	        newCompositeNode(grammarAccess.getMapTypeAccess().getCppTypeCppTypeParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCppType_in_ruleMapType4677);
                    lv_cppType_1_0=ruleCppType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getMapTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"cppType",
                            		lv_cppType_1_0, 
                            		"CppType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,47,FOLLOW_47_in_ruleMapType4690); 

                	newLeafNode(otherlv_2, grammarAccess.getMapTypeAccess().getLessThanSignKeyword_2());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2131:1: ( (lv_mapType1_3_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2132:1: (lv_mapType1_3_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2132:1: (lv_mapType1_3_0= ruleFieldType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2133:3: lv_mapType1_3_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getMapTypeAccess().getMapType1FieldTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleMapType4711);
            lv_mapType1_3_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getMapTypeRule());
            	        }
                   		set(
                   			current, 
                   			"mapType1",
                    		lv_mapType1_3_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2149:2: ( (lv_mapType1Annotation_4_0= ruleAnnotation ) )?
            int alt47=2;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==24) ) {
                alt47=1;
            }
            switch (alt47) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2150:1: (lv_mapType1Annotation_4_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2150:1: (lv_mapType1Annotation_4_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2151:3: lv_mapType1Annotation_4_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getMapTypeAccess().getMapType1AnnotationAnnotationParserRuleCall_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleMapType4732);
                    lv_mapType1Annotation_4_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getMapTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"mapType1Annotation",
                            		lv_mapType1Annotation_4_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,25,FOLLOW_25_in_ruleMapType4745); 

                	newLeafNode(otherlv_5, grammarAccess.getMapTypeAccess().getCommaKeyword_5());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2171:1: ( (lv_mapType2_6_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2172:1: (lv_mapType2_6_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2172:1: (lv_mapType2_6_0= ruleFieldType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2173:3: lv_mapType2_6_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getMapTypeAccess().getMapType2FieldTypeParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleMapType4766);
            lv_mapType2_6_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getMapTypeRule());
            	        }
                   		set(
                   			current, 
                   			"mapType2",
                    		lv_mapType2_6_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2189:2: ( (lv_mapType2Annotation_7_0= ruleAnnotation ) )?
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( (LA48_0==24) ) {
                alt48=1;
            }
            switch (alt48) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2190:1: (lv_mapType2Annotation_7_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2190:1: (lv_mapType2Annotation_7_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2191:3: lv_mapType2Annotation_7_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getMapTypeAccess().getMapType2AnnotationAnnotationParserRuleCall_7_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleMapType4787);
                    lv_mapType2Annotation_7_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getMapTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"mapType2Annotation",
                            		lv_mapType2Annotation_7_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,48,FOLLOW_48_in_ruleMapType4800); 

                	newLeafNode(otherlv_8, grammarAccess.getMapTypeAccess().getGreaterThanSignKeyword_8());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMapType"


    // $ANTLR start "entryRuleSetType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2219:1: entryRuleSetType returns [EObject current=null] : iv_ruleSetType= ruleSetType EOF ;
    public final EObject entryRuleSetType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSetType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2220:2: (iv_ruleSetType= ruleSetType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2221:2: iv_ruleSetType= ruleSetType EOF
            {
             newCompositeNode(grammarAccess.getSetTypeRule()); 
            pushFollow(FOLLOW_ruleSetType_in_entryRuleSetType4836);
            iv_ruleSetType=ruleSetType();

            state._fsp--;

             current =iv_ruleSetType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSetType4846); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSetType"


    // $ANTLR start "ruleSetType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2228:1: ruleSetType returns [EObject current=null] : (otherlv_0= 'set' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_setType_3_0= ruleFieldType ) ) ( (lv_setTypeAnnotation_4_0= ruleAnnotation ) )? otherlv_5= '>' ) ;
    public final EObject ruleSetType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        AntlrDatatypeRuleToken lv_cppType_1_0 = null;

        EObject lv_setType_3_0 = null;

        EObject lv_setTypeAnnotation_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2231:28: ( (otherlv_0= 'set' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_setType_3_0= ruleFieldType ) ) ( (lv_setTypeAnnotation_4_0= ruleAnnotation ) )? otherlv_5= '>' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2232:1: (otherlv_0= 'set' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_setType_3_0= ruleFieldType ) ) ( (lv_setTypeAnnotation_4_0= ruleAnnotation ) )? otherlv_5= '>' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2232:1: (otherlv_0= 'set' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_setType_3_0= ruleFieldType ) ) ( (lv_setTypeAnnotation_4_0= ruleAnnotation ) )? otherlv_5= '>' )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2232:3: otherlv_0= 'set' ( (lv_cppType_1_0= ruleCppType ) )? otherlv_2= '<' ( (lv_setType_3_0= ruleFieldType ) ) ( (lv_setTypeAnnotation_4_0= ruleAnnotation ) )? otherlv_5= '>'
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleSetType4883); 

                	newLeafNode(otherlv_0, grammarAccess.getSetTypeAccess().getSetKeyword_0());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2236:1: ( (lv_cppType_1_0= ruleCppType ) )?
            int alt49=2;
            int LA49_0 = input.LA(1);

            if ( (LA49_0==51) ) {
                alt49=1;
            }
            switch (alt49) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2237:1: (lv_cppType_1_0= ruleCppType )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2237:1: (lv_cppType_1_0= ruleCppType )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2238:3: lv_cppType_1_0= ruleCppType
                    {
                     
                    	        newCompositeNode(grammarAccess.getSetTypeAccess().getCppTypeCppTypeParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCppType_in_ruleSetType4904);
                    lv_cppType_1_0=ruleCppType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getSetTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"cppType",
                            		lv_cppType_1_0, 
                            		"CppType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,47,FOLLOW_47_in_ruleSetType4917); 

                	newLeafNode(otherlv_2, grammarAccess.getSetTypeAccess().getLessThanSignKeyword_2());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2258:1: ( (lv_setType_3_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2259:1: (lv_setType_3_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2259:1: (lv_setType_3_0= ruleFieldType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2260:3: lv_setType_3_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getSetTypeAccess().getSetTypeFieldTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleSetType4938);
            lv_setType_3_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSetTypeRule());
            	        }
                   		set(
                   			current, 
                   			"setType",
                    		lv_setType_3_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2276:2: ( (lv_setTypeAnnotation_4_0= ruleAnnotation ) )?
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==24) ) {
                alt50=1;
            }
            switch (alt50) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2277:1: (lv_setTypeAnnotation_4_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2277:1: (lv_setTypeAnnotation_4_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2278:3: lv_setTypeAnnotation_4_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getSetTypeAccess().getSetTypeAnnotationAnnotationParserRuleCall_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleSetType4959);
                    lv_setTypeAnnotation_4_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getSetTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"setTypeAnnotation",
                            		lv_setTypeAnnotation_4_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,48,FOLLOW_48_in_ruleSetType4972); 

                	newLeafNode(otherlv_5, grammarAccess.getSetTypeAccess().getGreaterThanSignKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSetType"


    // $ANTLR start "entryRuleListType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2306:1: entryRuleListType returns [EObject current=null] : iv_ruleListType= ruleListType EOF ;
    public final EObject entryRuleListType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleListType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2307:2: (iv_ruleListType= ruleListType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2308:2: iv_ruleListType= ruleListType EOF
            {
             newCompositeNode(grammarAccess.getListTypeRule()); 
            pushFollow(FOLLOW_ruleListType_in_entryRuleListType5008);
            iv_ruleListType=ruleListType();

            state._fsp--;

             current =iv_ruleListType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleListType5018); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleListType"


    // $ANTLR start "ruleListType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2315:1: ruleListType returns [EObject current=null] : (otherlv_0= 'list' otherlv_1= '<' ( (lv_listType_2_0= ruleFieldType ) ) ( (lv_listTypeAnnotation_3_0= ruleAnnotation ) )? otherlv_4= '>' ( (lv_cppType_5_0= ruleCppType ) )? ) ;
    public final EObject ruleListType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_4=null;
        EObject lv_listType_2_0 = null;

        EObject lv_listTypeAnnotation_3_0 = null;

        AntlrDatatypeRuleToken lv_cppType_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2318:28: ( (otherlv_0= 'list' otherlv_1= '<' ( (lv_listType_2_0= ruleFieldType ) ) ( (lv_listTypeAnnotation_3_0= ruleAnnotation ) )? otherlv_4= '>' ( (lv_cppType_5_0= ruleCppType ) )? ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2319:1: (otherlv_0= 'list' otherlv_1= '<' ( (lv_listType_2_0= ruleFieldType ) ) ( (lv_listTypeAnnotation_3_0= ruleAnnotation ) )? otherlv_4= '>' ( (lv_cppType_5_0= ruleCppType ) )? )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2319:1: (otherlv_0= 'list' otherlv_1= '<' ( (lv_listType_2_0= ruleFieldType ) ) ( (lv_listTypeAnnotation_3_0= ruleAnnotation ) )? otherlv_4= '>' ( (lv_cppType_5_0= ruleCppType ) )? )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2319:3: otherlv_0= 'list' otherlv_1= '<' ( (lv_listType_2_0= ruleFieldType ) ) ( (lv_listTypeAnnotation_3_0= ruleAnnotation ) )? otherlv_4= '>' ( (lv_cppType_5_0= ruleCppType ) )?
            {
            otherlv_0=(Token)match(input,50,FOLLOW_50_in_ruleListType5055); 

                	newLeafNode(otherlv_0, grammarAccess.getListTypeAccess().getListKeyword_0());
                
            otherlv_1=(Token)match(input,47,FOLLOW_47_in_ruleListType5067); 

                	newLeafNode(otherlv_1, grammarAccess.getListTypeAccess().getLessThanSignKeyword_1());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2327:1: ( (lv_listType_2_0= ruleFieldType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2328:1: (lv_listType_2_0= ruleFieldType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2328:1: (lv_listType_2_0= ruleFieldType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2329:3: lv_listType_2_0= ruleFieldType
            {
             
            	        newCompositeNode(grammarAccess.getListTypeAccess().getListTypeFieldTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleFieldType_in_ruleListType5088);
            lv_listType_2_0=ruleFieldType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getListTypeRule());
            	        }
                   		set(
                   			current, 
                   			"listType",
                    		lv_listType_2_0, 
                    		"FieldType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2345:2: ( (lv_listTypeAnnotation_3_0= ruleAnnotation ) )?
            int alt51=2;
            int LA51_0 = input.LA(1);

            if ( (LA51_0==24) ) {
                alt51=1;
            }
            switch (alt51) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2346:1: (lv_listTypeAnnotation_3_0= ruleAnnotation )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2346:1: (lv_listTypeAnnotation_3_0= ruleAnnotation )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2347:3: lv_listTypeAnnotation_3_0= ruleAnnotation
                    {
                     
                    	        newCompositeNode(grammarAccess.getListTypeAccess().getListTypeAnnotationAnnotationParserRuleCall_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAnnotation_in_ruleListType5109);
                    lv_listTypeAnnotation_3_0=ruleAnnotation();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getListTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"listTypeAnnotation",
                            		lv_listTypeAnnotation_3_0, 
                            		"Annotation");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,48,FOLLOW_48_in_ruleListType5122); 

                	newLeafNode(otherlv_4, grammarAccess.getListTypeAccess().getGreaterThanSignKeyword_4());
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2367:1: ( (lv_cppType_5_0= ruleCppType ) )?
            int alt52=2;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==51) ) {
                alt52=1;
            }
            switch (alt52) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2368:1: (lv_cppType_5_0= ruleCppType )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2368:1: (lv_cppType_5_0= ruleCppType )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2369:3: lv_cppType_5_0= ruleCppType
                    {
                     
                    	        newCompositeNode(grammarAccess.getListTypeAccess().getCppTypeCppTypeParserRuleCall_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCppType_in_ruleListType5143);
                    lv_cppType_5_0=ruleCppType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getListTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"cppType",
                            		lv_cppType_5_0, 
                            		"CppType");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleListType"


    // $ANTLR start "entryRuleCppType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2393:1: entryRuleCppType returns [String current=null] : iv_ruleCppType= ruleCppType EOF ;
    public final String entryRuleCppType() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleCppType = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2394:2: (iv_ruleCppType= ruleCppType EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2395:2: iv_ruleCppType= ruleCppType EOF
            {
             newCompositeNode(grammarAccess.getCppTypeRule()); 
            pushFollow(FOLLOW_ruleCppType_in_entryRuleCppType5181);
            iv_ruleCppType=ruleCppType();

            state._fsp--;

             current =iv_ruleCppType.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCppType5192); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCppType"


    // $ANTLR start "ruleCppType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2402:1: ruleCppType returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'cpp_type' this_STRING_1= RULE_STRING ) ;
    public final AntlrDatatypeRuleToken ruleCppType() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_STRING_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2405:28: ( (kw= 'cpp_type' this_STRING_1= RULE_STRING ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2406:1: (kw= 'cpp_type' this_STRING_1= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2406:1: (kw= 'cpp_type' this_STRING_1= RULE_STRING )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2407:2: kw= 'cpp_type' this_STRING_1= RULE_STRING
            {
            kw=(Token)match(input,51,FOLLOW_51_in_ruleCppType5230); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getCppTypeAccess().getCpp_typeKeyword_0()); 
                
            this_STRING_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCppType5245); 

            		current.merge(this_STRING_1);
                
             
                newLeafNode(this_STRING_1, grammarAccess.getCppTypeAccess().getSTRINGTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCppType"


    // $ANTLR start "entryRuleBaseTypeRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2427:1: entryRuleBaseTypeRef returns [EObject current=null] : iv_ruleBaseTypeRef= ruleBaseTypeRef EOF ;
    public final EObject entryRuleBaseTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBaseTypeRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2428:2: (iv_ruleBaseTypeRef= ruleBaseTypeRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2429:2: iv_ruleBaseTypeRef= ruleBaseTypeRef EOF
            {
             newCompositeNode(grammarAccess.getBaseTypeRefRule()); 
            pushFollow(FOLLOW_ruleBaseTypeRef_in_entryRuleBaseTypeRef5290);
            iv_ruleBaseTypeRef=ruleBaseTypeRef();

            state._fsp--;

             current =iv_ruleBaseTypeRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBaseTypeRef5300); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBaseTypeRef"


    // $ANTLR start "ruleBaseTypeRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2436:1: ruleBaseTypeRef returns [EObject current=null] : ( (lv_basicType_0_0= ruleBaseType ) ) ;
    public final EObject ruleBaseTypeRef() throws RecognitionException {
        EObject current = null;

        Enumerator lv_basicType_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2439:28: ( ( (lv_basicType_0_0= ruleBaseType ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2440:1: ( (lv_basicType_0_0= ruleBaseType ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2440:1: ( (lv_basicType_0_0= ruleBaseType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2441:1: (lv_basicType_0_0= ruleBaseType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2441:1: (lv_basicType_0_0= ruleBaseType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2442:3: lv_basicType_0_0= ruleBaseType
            {
             
            	        newCompositeNode(grammarAccess.getBaseTypeRefAccess().getBasicTypeBaseTypeEnumRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleBaseType_in_ruleBaseTypeRef5345);
            lv_basicType_0_0=ruleBaseType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getBaseTypeRefRule());
            	        }
                   		set(
                   			current, 
                   			"basicType",
                    		lv_basicType_0_0, 
                    		"BaseType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBaseTypeRef"


    // $ANTLR start "entryRuleContainerTypeRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2466:1: entryRuleContainerTypeRef returns [EObject current=null] : iv_ruleContainerTypeRef= ruleContainerTypeRef EOF ;
    public final EObject entryRuleContainerTypeRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainerTypeRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2467:2: (iv_ruleContainerTypeRef= ruleContainerTypeRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2468:2: iv_ruleContainerTypeRef= ruleContainerTypeRef EOF
            {
             newCompositeNode(grammarAccess.getContainerTypeRefRule()); 
            pushFollow(FOLLOW_ruleContainerTypeRef_in_entryRuleContainerTypeRef5380);
            iv_ruleContainerTypeRef=ruleContainerTypeRef();

            state._fsp--;

             current =iv_ruleContainerTypeRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleContainerTypeRef5390); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContainerTypeRef"


    // $ANTLR start "ruleContainerTypeRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2475:1: ruleContainerTypeRef returns [EObject current=null] : ( (lv_containerType_0_0= ruleContainerType ) ) ;
    public final EObject ruleContainerTypeRef() throws RecognitionException {
        EObject current = null;

        EObject lv_containerType_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2478:28: ( ( (lv_containerType_0_0= ruleContainerType ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2479:1: ( (lv_containerType_0_0= ruleContainerType ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2479:1: ( (lv_containerType_0_0= ruleContainerType ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2480:1: (lv_containerType_0_0= ruleContainerType )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2480:1: (lv_containerType_0_0= ruleContainerType )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2481:3: lv_containerType_0_0= ruleContainerType
            {
             
            	        newCompositeNode(grammarAccess.getContainerTypeRefAccess().getContainerTypeContainerTypeParserRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleContainerType_in_ruleContainerTypeRef5435);
            lv_containerType_0_0=ruleContainerType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getContainerTypeRefRule());
            	        }
                   		set(
                   			current, 
                   			"containerType",
                    		lv_containerType_0_0, 
                    		"ContainerType");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContainerTypeRef"


    // $ANTLR start "entryRuleDefinitionRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2505:1: entryRuleDefinitionRef returns [EObject current=null] : iv_ruleDefinitionRef= ruleDefinitionRef EOF ;
    public final EObject entryRuleDefinitionRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefinitionRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2506:2: (iv_ruleDefinitionRef= ruleDefinitionRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2507:2: iv_ruleDefinitionRef= ruleDefinitionRef EOF
            {
             newCompositeNode(grammarAccess.getDefinitionRefRule()); 
            pushFollow(FOLLOW_ruleDefinitionRef_in_entryRuleDefinitionRef5470);
            iv_ruleDefinitionRef=ruleDefinitionRef();

            state._fsp--;

             current =iv_ruleDefinitionRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinitionRef5480); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefinitionRef"


    // $ANTLR start "ruleDefinitionRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2514:1: ruleDefinitionRef returns [EObject current=null] : ( ( ruleQualifiedName ) ) ;
    public final EObject ruleDefinitionRef() throws RecognitionException {
        EObject current = null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2517:28: ( ( ( ruleQualifiedName ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2518:1: ( ( ruleQualifiedName ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2518:1: ( ( ruleQualifiedName ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2519:1: ( ruleQualifiedName )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2519:1: ( ruleQualifiedName )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2520:3: ruleQualifiedName
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getDefinitionRefRule());
            	        }
                    
             
            	        newCompositeNode(grammarAccess.getDefinitionRefAccess().getDefinitionDefinitionCrossReference_0()); 
            	    
            pushFollow(FOLLOW_ruleQualifiedName_in_ruleDefinitionRef5527);
            ruleQualifiedName();

            state._fsp--;

             
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefinitionRef"


    // $ANTLR start "entryRuleConstValue"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2541:1: entryRuleConstValue returns [EObject current=null] : iv_ruleConstValue= ruleConstValue EOF ;
    public final EObject entryRuleConstValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstValue = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2542:2: (iv_ruleConstValue= ruleConstValue EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2543:2: iv_ruleConstValue= ruleConstValue EOF
            {
             newCompositeNode(grammarAccess.getConstValueRule()); 
            pushFollow(FOLLOW_ruleConstValue_in_entryRuleConstValue5562);
            iv_ruleConstValue=ruleConstValue();

            state._fsp--;

             current =iv_ruleConstValue; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstValue5572); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstValue"


    // $ANTLR start "ruleConstValue"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2550:1: ruleConstValue returns [EObject current=null] : (this_DefinitionRef_0= ruleDefinitionRef | this_BooleanRef_1= ruleBooleanRef | this_NumberRef_2= ruleNumberRef | this_StringRef_3= ruleStringRef | this_ConstList_4= ruleConstList | this_ConstMap_5= ruleConstMap ) ;
    public final EObject ruleConstValue() throws RecognitionException {
        EObject current = null;

        EObject this_DefinitionRef_0 = null;

        EObject this_BooleanRef_1 = null;

        EObject this_NumberRef_2 = null;

        EObject this_StringRef_3 = null;

        EObject this_ConstList_4 = null;

        EObject this_ConstMap_5 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2553:28: ( (this_DefinitionRef_0= ruleDefinitionRef | this_BooleanRef_1= ruleBooleanRef | this_NumberRef_2= ruleNumberRef | this_StringRef_3= ruleStringRef | this_ConstList_4= ruleConstList | this_ConstMap_5= ruleConstMap ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2554:1: (this_DefinitionRef_0= ruleDefinitionRef | this_BooleanRef_1= ruleBooleanRef | this_NumberRef_2= ruleNumberRef | this_StringRef_3= ruleStringRef | this_ConstList_4= ruleConstList | this_ConstMap_5= ruleConstMap )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2554:1: (this_DefinitionRef_0= ruleDefinitionRef | this_BooleanRef_1= ruleBooleanRef | this_NumberRef_2= ruleNumberRef | this_StringRef_3= ruleStringRef | this_ConstList_4= ruleConstList | this_ConstMap_5= ruleConstMap )
            int alt53=6;
            switch ( input.LA(1) ) {
            case RULE_ID:
                {
                alt53=1;
                }
                break;
            case 65:
            case 66:
                {
                alt53=2;
                }
                break;
            case RULE_LONG:
            case RULE_HEX:
            case RULE_DOUBLE:
                {
                alt53=3;
                }
                break;
            case RULE_STRING:
                {
                alt53=4;
                }
                break;
            case 52:
                {
                alt53=5;
                }
                break;
            case 28:
                {
                alt53=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 53, 0, input);

                throw nvae;
            }

            switch (alt53) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2555:5: this_DefinitionRef_0= ruleDefinitionRef
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getDefinitionRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleDefinitionRef_in_ruleConstValue5619);
                    this_DefinitionRef_0=ruleDefinitionRef();

                    state._fsp--;

                     
                            current = this_DefinitionRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2565:5: this_BooleanRef_1= ruleBooleanRef
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getBooleanRefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleBooleanRef_in_ruleConstValue5646);
                    this_BooleanRef_1=ruleBooleanRef();

                    state._fsp--;

                     
                            current = this_BooleanRef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2575:5: this_NumberRef_2= ruleNumberRef
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getNumberRefParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleNumberRef_in_ruleConstValue5673);
                    this_NumberRef_2=ruleNumberRef();

                    state._fsp--;

                     
                            current = this_NumberRef_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2585:5: this_StringRef_3= ruleStringRef
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getStringRefParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleStringRef_in_ruleConstValue5700);
                    this_StringRef_3=ruleStringRef();

                    state._fsp--;

                     
                            current = this_StringRef_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2595:5: this_ConstList_4= ruleConstList
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getConstListParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleConstList_in_ruleConstValue5727);
                    this_ConstList_4=ruleConstList();

                    state._fsp--;

                     
                            current = this_ConstList_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2605:5: this_ConstMap_5= ruleConstMap
                    {
                     
                            newCompositeNode(grammarAccess.getConstValueAccess().getConstMapParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleConstMap_in_ruleConstValue5754);
                    this_ConstMap_5=ruleConstMap();

                    state._fsp--;

                     
                            current = this_ConstMap_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstValue"


    // $ANTLR start "entryRuleNumberRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2621:1: entryRuleNumberRef returns [EObject current=null] : iv_ruleNumberRef= ruleNumberRef EOF ;
    public final EObject entryRuleNumberRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumberRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2622:2: (iv_ruleNumberRef= ruleNumberRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2623:2: iv_ruleNumberRef= ruleNumberRef EOF
            {
             newCompositeNode(grammarAccess.getNumberRefRule()); 
            pushFollow(FOLLOW_ruleNumberRef_in_entryRuleNumberRef5789);
            iv_ruleNumberRef=ruleNumberRef();

            state._fsp--;

             current =iv_ruleNumberRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumberRef5799); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumberRef"


    // $ANTLR start "ruleNumberRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2630:1: ruleNumberRef returns [EObject current=null] : (this_HexRef_0= ruleHexRef | this_DoubleRef_1= ruleDoubleRef | this_LongRef_2= ruleLongRef ) ;
    public final EObject ruleNumberRef() throws RecognitionException {
        EObject current = null;

        EObject this_HexRef_0 = null;

        EObject this_DoubleRef_1 = null;

        EObject this_LongRef_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2633:28: ( (this_HexRef_0= ruleHexRef | this_DoubleRef_1= ruleDoubleRef | this_LongRef_2= ruleLongRef ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2634:1: (this_HexRef_0= ruleHexRef | this_DoubleRef_1= ruleDoubleRef | this_LongRef_2= ruleLongRef )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2634:1: (this_HexRef_0= ruleHexRef | this_DoubleRef_1= ruleDoubleRef | this_LongRef_2= ruleLongRef )
            int alt54=3;
            switch ( input.LA(1) ) {
            case RULE_HEX:
                {
                alt54=1;
                }
                break;
            case RULE_DOUBLE:
                {
                alt54=2;
                }
                break;
            case RULE_LONG:
                {
                alt54=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 54, 0, input);

                throw nvae;
            }

            switch (alt54) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2635:5: this_HexRef_0= ruleHexRef
                    {
                     
                            newCompositeNode(grammarAccess.getNumberRefAccess().getHexRefParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleHexRef_in_ruleNumberRef5846);
                    this_HexRef_0=ruleHexRef();

                    state._fsp--;

                     
                            current = this_HexRef_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2645:5: this_DoubleRef_1= ruleDoubleRef
                    {
                     
                            newCompositeNode(grammarAccess.getNumberRefAccess().getDoubleRefParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleDoubleRef_in_ruleNumberRef5873);
                    this_DoubleRef_1=ruleDoubleRef();

                    state._fsp--;

                     
                            current = this_DoubleRef_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2655:5: this_LongRef_2= ruleLongRef
                    {
                     
                            newCompositeNode(grammarAccess.getNumberRefAccess().getLongRefParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleLongRef_in_ruleNumberRef5900);
                    this_LongRef_2=ruleLongRef();

                    state._fsp--;

                     
                            current = this_LongRef_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumberRef"


    // $ANTLR start "entryRuleHexRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2671:1: entryRuleHexRef returns [EObject current=null] : iv_ruleHexRef= ruleHexRef EOF ;
    public final EObject entryRuleHexRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHexRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2672:2: (iv_ruleHexRef= ruleHexRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2673:2: iv_ruleHexRef= ruleHexRef EOF
            {
             newCompositeNode(grammarAccess.getHexRefRule()); 
            pushFollow(FOLLOW_ruleHexRef_in_entryRuleHexRef5935);
            iv_ruleHexRef=ruleHexRef();

            state._fsp--;

             current =iv_ruleHexRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHexRef5945); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHexRef"


    // $ANTLR start "ruleHexRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2680:1: ruleHexRef returns [EObject current=null] : ( (lv_hex_0_0= RULE_HEX ) ) ;
    public final EObject ruleHexRef() throws RecognitionException {
        EObject current = null;

        Token lv_hex_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2683:28: ( ( (lv_hex_0_0= RULE_HEX ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2684:1: ( (lv_hex_0_0= RULE_HEX ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2684:1: ( (lv_hex_0_0= RULE_HEX ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2685:1: (lv_hex_0_0= RULE_HEX )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2685:1: (lv_hex_0_0= RULE_HEX )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2686:3: lv_hex_0_0= RULE_HEX
            {
            lv_hex_0_0=(Token)match(input,RULE_HEX,FOLLOW_RULE_HEX_in_ruleHexRef5986); 

            			newLeafNode(lv_hex_0_0, grammarAccess.getHexRefAccess().getHexHEXTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getHexRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"hex",
                    		lv_hex_0_0, 
                    		"HEX");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHexRef"


    // $ANTLR start "entryRuleLongRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2710:1: entryRuleLongRef returns [EObject current=null] : iv_ruleLongRef= ruleLongRef EOF ;
    public final EObject entryRuleLongRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLongRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2711:2: (iv_ruleLongRef= ruleLongRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2712:2: iv_ruleLongRef= ruleLongRef EOF
            {
             newCompositeNode(grammarAccess.getLongRefRule()); 
            pushFollow(FOLLOW_ruleLongRef_in_entryRuleLongRef6026);
            iv_ruleLongRef=ruleLongRef();

            state._fsp--;

             current =iv_ruleLongRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLongRef6036); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLongRef"


    // $ANTLR start "ruleLongRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2719:1: ruleLongRef returns [EObject current=null] : ( (lv_long_0_0= RULE_LONG ) ) ;
    public final EObject ruleLongRef() throws RecognitionException {
        EObject current = null;

        Token lv_long_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2722:28: ( ( (lv_long_0_0= RULE_LONG ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2723:1: ( (lv_long_0_0= RULE_LONG ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2723:1: ( (lv_long_0_0= RULE_LONG ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2724:1: (lv_long_0_0= RULE_LONG )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2724:1: (lv_long_0_0= RULE_LONG )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2725:3: lv_long_0_0= RULE_LONG
            {
            lv_long_0_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleLongRef6077); 

            			newLeafNode(lv_long_0_0, grammarAccess.getLongRefAccess().getLongLONGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getLongRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"long",
                    		lv_long_0_0, 
                    		"LONG");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLongRef"


    // $ANTLR start "entryRuleDoubleRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2749:1: entryRuleDoubleRef returns [EObject current=null] : iv_ruleDoubleRef= ruleDoubleRef EOF ;
    public final EObject entryRuleDoubleRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDoubleRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2750:2: (iv_ruleDoubleRef= ruleDoubleRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2751:2: iv_ruleDoubleRef= ruleDoubleRef EOF
            {
             newCompositeNode(grammarAccess.getDoubleRefRule()); 
            pushFollow(FOLLOW_ruleDoubleRef_in_entryRuleDoubleRef6117);
            iv_ruleDoubleRef=ruleDoubleRef();

            state._fsp--;

             current =iv_ruleDoubleRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDoubleRef6127); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDoubleRef"


    // $ANTLR start "ruleDoubleRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2758:1: ruleDoubleRef returns [EObject current=null] : ( (lv_double_0_0= RULE_DOUBLE ) ) ;
    public final EObject ruleDoubleRef() throws RecognitionException {
        EObject current = null;

        Token lv_double_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2761:28: ( ( (lv_double_0_0= RULE_DOUBLE ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2762:1: ( (lv_double_0_0= RULE_DOUBLE ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2762:1: ( (lv_double_0_0= RULE_DOUBLE ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2763:1: (lv_double_0_0= RULE_DOUBLE )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2763:1: (lv_double_0_0= RULE_DOUBLE )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2764:3: lv_double_0_0= RULE_DOUBLE
            {
            lv_double_0_0=(Token)match(input,RULE_DOUBLE,FOLLOW_RULE_DOUBLE_in_ruleDoubleRef6168); 

            			newLeafNode(lv_double_0_0, grammarAccess.getDoubleRefAccess().getDoubleDOUBLETerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDoubleRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"double",
                    		lv_double_0_0, 
                    		"DOUBLE");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDoubleRef"


    // $ANTLR start "entryRuleBooleanRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2788:1: entryRuleBooleanRef returns [EObject current=null] : iv_ruleBooleanRef= ruleBooleanRef EOF ;
    public final EObject entryRuleBooleanRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2789:2: (iv_ruleBooleanRef= ruleBooleanRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2790:2: iv_ruleBooleanRef= ruleBooleanRef EOF
            {
             newCompositeNode(grammarAccess.getBooleanRefRule()); 
            pushFollow(FOLLOW_ruleBooleanRef_in_entryRuleBooleanRef6208);
            iv_ruleBooleanRef=ruleBooleanRef();

            state._fsp--;

             current =iv_ruleBooleanRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBooleanRef6218); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanRef"


    // $ANTLR start "ruleBooleanRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2797:1: ruleBooleanRef returns [EObject current=null] : ( (lv_boolean_0_0= ruleBOOL ) ) ;
    public final EObject ruleBooleanRef() throws RecognitionException {
        EObject current = null;

        Enumerator lv_boolean_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2800:28: ( ( (lv_boolean_0_0= ruleBOOL ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2801:1: ( (lv_boolean_0_0= ruleBOOL ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2801:1: ( (lv_boolean_0_0= ruleBOOL ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2802:1: (lv_boolean_0_0= ruleBOOL )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2802:1: (lv_boolean_0_0= ruleBOOL )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2803:3: lv_boolean_0_0= ruleBOOL
            {
             
            	        newCompositeNode(grammarAccess.getBooleanRefAccess().getBooleanBOOLEnumRuleCall_0()); 
            	    
            pushFollow(FOLLOW_ruleBOOL_in_ruleBooleanRef6263);
            lv_boolean_0_0=ruleBOOL();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getBooleanRefRule());
            	        }
                   		set(
                   			current, 
                   			"boolean",
                    		lv_boolean_0_0, 
                    		"BOOL");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanRef"


    // $ANTLR start "entryRuleStringRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2827:1: entryRuleStringRef returns [EObject current=null] : iv_ruleStringRef= ruleStringRef EOF ;
    public final EObject entryRuleStringRef() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringRef = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2828:2: (iv_ruleStringRef= ruleStringRef EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2829:2: iv_ruleStringRef= ruleStringRef EOF
            {
             newCompositeNode(grammarAccess.getStringRefRule()); 
            pushFollow(FOLLOW_ruleStringRef_in_entryRuleStringRef6298);
            iv_ruleStringRef=ruleStringRef();

            state._fsp--;

             current =iv_ruleStringRef; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringRef6308); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringRef"


    // $ANTLR start "ruleStringRef"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2836:1: ruleStringRef returns [EObject current=null] : ( (lv_string_0_0= RULE_STRING ) ) ;
    public final EObject ruleStringRef() throws RecognitionException {
        EObject current = null;

        Token lv_string_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2839:28: ( ( (lv_string_0_0= RULE_STRING ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2840:1: ( (lv_string_0_0= RULE_STRING ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2840:1: ( (lv_string_0_0= RULE_STRING ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2841:1: (lv_string_0_0= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2841:1: (lv_string_0_0= RULE_STRING )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2842:3: lv_string_0_0= RULE_STRING
            {
            lv_string_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringRef6349); 

            			newLeafNode(lv_string_0_0, grammarAccess.getStringRefAccess().getStringSTRINGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStringRefRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"string",
                    		lv_string_0_0, 
                    		"STRING");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringRef"


    // $ANTLR start "entryRuleConstList"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2866:1: entryRuleConstList returns [EObject current=null] : iv_ruleConstList= ruleConstList EOF ;
    public final EObject entryRuleConstList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstList = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2867:2: (iv_ruleConstList= ruleConstList EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2868:2: iv_ruleConstList= ruleConstList EOF
            {
             newCompositeNode(grammarAccess.getConstListRule()); 
            pushFollow(FOLLOW_ruleConstList_in_entryRuleConstList6389);
            iv_ruleConstList=ruleConstList();

            state._fsp--;

             current =iv_ruleConstList; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstList6399); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstList"


    // $ANTLR start "ruleConstList"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2875:1: ruleConstList returns [EObject current=null] : ( ( ( (lv_value_0_0= '[' ) ) otherlv_1= ']' ) | (otherlv_2= '[' ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_5= ']' ) ) ;
    public final EObject ruleConstList() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_5=null;
        EObject lv_list_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2878:28: ( ( ( ( (lv_value_0_0= '[' ) ) otherlv_1= ']' ) | (otherlv_2= '[' ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_5= ']' ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2879:1: ( ( ( (lv_value_0_0= '[' ) ) otherlv_1= ']' ) | (otherlv_2= '[' ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_5= ']' ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2879:1: ( ( ( (lv_value_0_0= '[' ) ) otherlv_1= ']' ) | (otherlv_2= '[' ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_5= ']' ) )
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( (LA57_0==52) ) {
                int LA57_1 = input.LA(2);

                if ( (LA57_1==53) ) {
                    alt57=1;
                }
                else if ( ((LA57_1>=RULE_STRING && LA57_1<=RULE_DOUBLE)||LA57_1==28||LA57_1==52||(LA57_1>=65 && LA57_1<=66)) ) {
                    alt57=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 57, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 57, 0, input);

                throw nvae;
            }
            switch (alt57) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2879:2: ( ( (lv_value_0_0= '[' ) ) otherlv_1= ']' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2879:2: ( ( (lv_value_0_0= '[' ) ) otherlv_1= ']' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2879:3: ( (lv_value_0_0= '[' ) ) otherlv_1= ']'
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2879:3: ( (lv_value_0_0= '[' ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2880:1: (lv_value_0_0= '[' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2880:1: (lv_value_0_0= '[' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2881:3: lv_value_0_0= '['
                    {
                    lv_value_0_0=(Token)match(input,52,FOLLOW_52_in_ruleConstList6443); 

                            newLeafNode(lv_value_0_0, grammarAccess.getConstListAccess().getValueLeftSquareBracketKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConstListRule());
                    	        }
                           		setWithLastConsumed(current, "value", lv_value_0_0, "[");
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,53,FOLLOW_53_in_ruleConstList6468); 

                        	newLeafNode(otherlv_1, grammarAccess.getConstListAccess().getRightSquareBracketKeyword_0_1());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2899:6: (otherlv_2= '[' ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_5= ']' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2899:6: (otherlv_2= '[' ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_5= ']' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2899:8: otherlv_2= '[' ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_5= ']'
                    {
                    otherlv_2=(Token)match(input,52,FOLLOW_52_in_ruleConstList6488); 

                        	newLeafNode(otherlv_2, grammarAccess.getConstListAccess().getLeftSquareBracketKeyword_1_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2903:1: ( ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )? )+
                    int cnt56=0;
                    loop56:
                    do {
                        int alt56=2;
                        int LA56_0 = input.LA(1);

                        if ( ((LA56_0>=RULE_STRING && LA56_0<=RULE_DOUBLE)||LA56_0==28||LA56_0==52||(LA56_0>=65 && LA56_0<=66)) ) {
                            alt56=1;
                        }


                        switch (alt56) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2903:2: ( (lv_list_3_0= ruleConstValue ) ) ( ruleListSeparator )?
                    	    {
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2903:2: ( (lv_list_3_0= ruleConstValue ) )
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2904:1: (lv_list_3_0= ruleConstValue )
                    	    {
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2904:1: (lv_list_3_0= ruleConstValue )
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2905:3: lv_list_3_0= ruleConstValue
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConstListAccess().getListConstValueParserRuleCall_1_1_0_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleConstValue_in_ruleConstList6510);
                    	    lv_list_3_0=ruleConstValue();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConstListRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"list",
                    	            		lv_list_3_0, 
                    	            		"ConstValue");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }

                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2921:2: ( ruleListSeparator )?
                    	    int alt55=2;
                    	    int LA55_0 = input.LA(1);

                    	    if ( (LA55_0==25||LA55_0==54) ) {
                    	        alt55=1;
                    	    }
                    	    switch (alt55) {
                    	        case 1 :
                    	            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2922:5: ruleListSeparator
                    	            {
                    	             
                    	                    newCompositeNode(grammarAccess.getConstListAccess().getListSeparatorParserRuleCall_1_1_1()); 
                    	                
                    	            pushFollow(FOLLOW_ruleListSeparator_in_ruleConstList6527);
                    	            ruleListSeparator();

                    	            state._fsp--;

                    	             
                    	                    afterParserOrEnumRuleCall();
                    	                

                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt56 >= 1 ) break loop56;
                                EarlyExitException eee =
                                    new EarlyExitException(56, input);
                                throw eee;
                        }
                        cnt56++;
                    } while (true);

                    otherlv_5=(Token)match(input,53,FOLLOW_53_in_ruleConstList6542); 

                        	newLeafNode(otherlv_5, grammarAccess.getConstListAccess().getRightSquareBracketKeyword_1_2());
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstList"


    // $ANTLR start "entryRuleConstMap"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2941:1: entryRuleConstMap returns [EObject current=null] : iv_ruleConstMap= ruleConstMap EOF ;
    public final EObject entryRuleConstMap() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstMap = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2942:2: (iv_ruleConstMap= ruleConstMap EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2943:2: iv_ruleConstMap= ruleConstMap EOF
            {
             newCompositeNode(grammarAccess.getConstMapRule()); 
            pushFollow(FOLLOW_ruleConstMap_in_entryRuleConstMap6579);
            iv_ruleConstMap=ruleConstMap();

            state._fsp--;

             current =iv_ruleConstMap; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstMap6589); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstMap"


    // $ANTLR start "ruleConstMap"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2950:1: ruleConstMap returns [EObject current=null] : ( ( ( (lv_value_0_0= '{' ) ) otherlv_1= '}' ) | (otherlv_2= '{' ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_7= '}' ) ) ;
    public final EObject ruleConstMap() throws RecognitionException {
        EObject current = null;

        Token lv_value_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        EObject lv_v1_3_0 = null;

        EObject lv_v2_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2953:28: ( ( ( ( (lv_value_0_0= '{' ) ) otherlv_1= '}' ) | (otherlv_2= '{' ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_7= '}' ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2954:1: ( ( ( (lv_value_0_0= '{' ) ) otherlv_1= '}' ) | (otherlv_2= '{' ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_7= '}' ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2954:1: ( ( ( (lv_value_0_0= '{' ) ) otherlv_1= '}' ) | (otherlv_2= '{' ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_7= '}' ) )
            int alt60=2;
            int LA60_0 = input.LA(1);

            if ( (LA60_0==28) ) {
                int LA60_1 = input.LA(2);

                if ( ((LA60_1>=RULE_STRING && LA60_1<=RULE_DOUBLE)||LA60_1==28||LA60_1==52||(LA60_1>=65 && LA60_1<=66)) ) {
                    alt60=2;
                }
                else if ( (LA60_1==29) ) {
                    alt60=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 60, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 60, 0, input);

                throw nvae;
            }
            switch (alt60) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2954:2: ( ( (lv_value_0_0= '{' ) ) otherlv_1= '}' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2954:2: ( ( (lv_value_0_0= '{' ) ) otherlv_1= '}' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2954:3: ( (lv_value_0_0= '{' ) ) otherlv_1= '}'
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2954:3: ( (lv_value_0_0= '{' ) )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2955:1: (lv_value_0_0= '{' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2955:1: (lv_value_0_0= '{' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2956:3: lv_value_0_0= '{'
                    {
                    lv_value_0_0=(Token)match(input,28,FOLLOW_28_in_ruleConstMap6633); 

                            newLeafNode(lv_value_0_0, grammarAccess.getConstMapAccess().getValueLeftCurlyBracketKeyword_0_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConstMapRule());
                    	        }
                           		setWithLastConsumed(current, "value", lv_value_0_0, "{");
                    	    

                    }


                    }

                    otherlv_1=(Token)match(input,29,FOLLOW_29_in_ruleConstMap6658); 

                        	newLeafNode(otherlv_1, grammarAccess.getConstMapAccess().getRightCurlyBracketKeyword_0_1());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2974:6: (otherlv_2= '{' ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_7= '}' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2974:6: (otherlv_2= '{' ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_7= '}' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2974:8: otherlv_2= '{' ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+ otherlv_7= '}'
                    {
                    otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleConstMap6678); 

                        	newLeafNode(otherlv_2, grammarAccess.getConstMapAccess().getLeftCurlyBracketKeyword_1_0());
                        
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2978:1: ( ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )? )+
                    int cnt59=0;
                    loop59:
                    do {
                        int alt59=2;
                        int LA59_0 = input.LA(1);

                        if ( ((LA59_0>=RULE_STRING && LA59_0<=RULE_DOUBLE)||LA59_0==28||LA59_0==52||(LA59_0>=65 && LA59_0<=66)) ) {
                            alt59=1;
                        }


                        switch (alt59) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2978:2: ( (lv_v1_3_0= ruleConstValue ) ) otherlv_4= ':' ( (lv_v2_5_0= ruleConstValue ) ) ( ruleListSeparator )?
                    	    {
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2978:2: ( (lv_v1_3_0= ruleConstValue ) )
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2979:1: (lv_v1_3_0= ruleConstValue )
                    	    {
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2979:1: (lv_v1_3_0= ruleConstValue )
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:2980:3: lv_v1_3_0= ruleConstValue
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConstMapAccess().getV1ConstValueParserRuleCall_1_1_0_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleConstValue_in_ruleConstMap6700);
                    	    lv_v1_3_0=ruleConstValue();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConstMapRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"v1",
                    	            		lv_v1_3_0, 
                    	            		"ConstValue");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }

                    	    otherlv_4=(Token)match(input,40,FOLLOW_40_in_ruleConstMap6712); 

                    	        	newLeafNode(otherlv_4, grammarAccess.getConstMapAccess().getColonKeyword_1_1_1());
                    	        
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3000:1: ( (lv_v2_5_0= ruleConstValue ) )
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3001:1: (lv_v2_5_0= ruleConstValue )
                    	    {
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3001:1: (lv_v2_5_0= ruleConstValue )
                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3002:3: lv_v2_5_0= ruleConstValue
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getConstMapAccess().getV2ConstValueParserRuleCall_1_1_2_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleConstValue_in_ruleConstMap6733);
                    	    lv_v2_5_0=ruleConstValue();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getConstMapRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"v2",
                    	            		lv_v2_5_0, 
                    	            		"ConstValue");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }

                    	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3018:2: ( ruleListSeparator )?
                    	    int alt58=2;
                    	    int LA58_0 = input.LA(1);

                    	    if ( (LA58_0==25||LA58_0==54) ) {
                    	        alt58=1;
                    	    }
                    	    switch (alt58) {
                    	        case 1 :
                    	            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3019:5: ruleListSeparator
                    	            {
                    	             
                    	                    newCompositeNode(grammarAccess.getConstMapAccess().getListSeparatorParserRuleCall_1_1_3()); 
                    	                
                    	            pushFollow(FOLLOW_ruleListSeparator_in_ruleConstMap6750);
                    	            ruleListSeparator();

                    	            state._fsp--;

                    	             
                    	                    afterParserOrEnumRuleCall();
                    	                

                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt59 >= 1 ) break loop59;
                                EarlyExitException eee =
                                    new EarlyExitException(59, input);
                                throw eee;
                        }
                        cnt59++;
                    } while (true);

                    otherlv_7=(Token)match(input,29,FOLLOW_29_in_ruleConstMap6765); 

                        	newLeafNode(otherlv_7, grammarAccess.getConstMapAccess().getRightCurlyBracketKeyword_1_2());
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstMap"


    // $ANTLR start "entryRuleListSeparator"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3038:1: entryRuleListSeparator returns [String current=null] : iv_ruleListSeparator= ruleListSeparator EOF ;
    public final String entryRuleListSeparator() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleListSeparator = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3039:2: (iv_ruleListSeparator= ruleListSeparator EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3040:2: iv_ruleListSeparator= ruleListSeparator EOF
            {
             newCompositeNode(grammarAccess.getListSeparatorRule()); 
            pushFollow(FOLLOW_ruleListSeparator_in_entryRuleListSeparator6803);
            iv_ruleListSeparator=ruleListSeparator();

            state._fsp--;

             current =iv_ruleListSeparator.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleListSeparator6814); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleListSeparator"


    // $ANTLR start "ruleListSeparator"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3047:1: ruleListSeparator returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= ',' | kw= ';' ) ;
    public final AntlrDatatypeRuleToken ruleListSeparator() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3050:28: ( (kw= ',' | kw= ';' ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3051:1: (kw= ',' | kw= ';' )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3051:1: (kw= ',' | kw= ';' )
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==25) ) {
                alt61=1;
            }
            else if ( (LA61_0==54) ) {
                alt61=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 61, 0, input);

                throw nvae;
            }
            switch (alt61) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3052:2: kw= ','
                    {
                    kw=(Token)match(input,25,FOLLOW_25_in_ruleListSeparator6852); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getListSeparatorAccess().getCommaKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3059:2: kw= ';'
                    {
                    kw=(Token)match(input,54,FOLLOW_54_in_ruleListSeparator6871); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getListSeparatorAccess().getSemicolonKeyword_1()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleListSeparator"


    // $ANTLR start "entryRuleQualifiedName"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3072:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
    public final String entryRuleQualifiedName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;


        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3073:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3074:2: iv_ruleQualifiedName= ruleQualifiedName EOF
            {
             newCompositeNode(grammarAccess.getQualifiedNameRule()); 
            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName6912);
            iv_ruleQualifiedName=ruleQualifiedName();

            state._fsp--;

             current =iv_ruleQualifiedName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName6923); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQualifiedName"


    // $ANTLR start "ruleQualifiedName"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3081:1: ruleQualifiedName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQualifiedName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3084:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3085:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3085:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3085:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName6963); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3092:1: (kw= '.' this_ID_2= RULE_ID )*
            loop62:
            do {
                int alt62=2;
                int LA62_0 = input.LA(1);

                if ( (LA62_0==55) ) {
                    alt62=1;
                }


                switch (alt62) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3093:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,55,FOLLOW_55_in_ruleQualifiedName6982); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQualifiedName6997); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQualifiedNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop62;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQualifiedName"


    // $ANTLR start "ruleBaseType"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3113:1: ruleBaseType returns [Enumerator current=null] : ( (enumLiteral_0= 'bool' ) | (enumLiteral_1= 'byte' ) | (enumLiteral_2= 'i16' ) | (enumLiteral_3= 'i32' ) | (enumLiteral_4= 'i64' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'string' ) | (enumLiteral_7= 'binary' ) | (enumLiteral_8= 'slist' ) ) ;
    public final Enumerator ruleBaseType() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;
        Token enumLiteral_3=null;
        Token enumLiteral_4=null;
        Token enumLiteral_5=null;
        Token enumLiteral_6=null;
        Token enumLiteral_7=null;
        Token enumLiteral_8=null;

         enterRule(); 
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3115:28: ( ( (enumLiteral_0= 'bool' ) | (enumLiteral_1= 'byte' ) | (enumLiteral_2= 'i16' ) | (enumLiteral_3= 'i32' ) | (enumLiteral_4= 'i64' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'string' ) | (enumLiteral_7= 'binary' ) | (enumLiteral_8= 'slist' ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3116:1: ( (enumLiteral_0= 'bool' ) | (enumLiteral_1= 'byte' ) | (enumLiteral_2= 'i16' ) | (enumLiteral_3= 'i32' ) | (enumLiteral_4= 'i64' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'string' ) | (enumLiteral_7= 'binary' ) | (enumLiteral_8= 'slist' ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3116:1: ( (enumLiteral_0= 'bool' ) | (enumLiteral_1= 'byte' ) | (enumLiteral_2= 'i16' ) | (enumLiteral_3= 'i32' ) | (enumLiteral_4= 'i64' ) | (enumLiteral_5= 'double' ) | (enumLiteral_6= 'string' ) | (enumLiteral_7= 'binary' ) | (enumLiteral_8= 'slist' ) )
            int alt63=9;
            switch ( input.LA(1) ) {
            case 56:
                {
                alt63=1;
                }
                break;
            case 57:
                {
                alt63=2;
                }
                break;
            case 58:
                {
                alt63=3;
                }
                break;
            case 59:
                {
                alt63=4;
                }
                break;
            case 60:
                {
                alt63=5;
                }
                break;
            case 61:
                {
                alt63=6;
                }
                break;
            case 62:
                {
                alt63=7;
                }
                break;
            case 63:
                {
                alt63=8;
                }
                break;
            case 64:
                {
                alt63=9;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 63, 0, input);

                throw nvae;
            }

            switch (alt63) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3116:2: (enumLiteral_0= 'bool' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3116:2: (enumLiteral_0= 'bool' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3116:4: enumLiteral_0= 'bool'
                    {
                    enumLiteral_0=(Token)match(input,56,FOLLOW_56_in_ruleBaseType7058); 

                            current = grammarAccess.getBaseTypeAccess().getBoolEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getBaseTypeAccess().getBoolEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3122:6: (enumLiteral_1= 'byte' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3122:6: (enumLiteral_1= 'byte' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3122:8: enumLiteral_1= 'byte'
                    {
                    enumLiteral_1=(Token)match(input,57,FOLLOW_57_in_ruleBaseType7075); 

                            current = grammarAccess.getBaseTypeAccess().getByteEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getBaseTypeAccess().getByteEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3128:6: (enumLiteral_2= 'i16' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3128:6: (enumLiteral_2= 'i16' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3128:8: enumLiteral_2= 'i16'
                    {
                    enumLiteral_2=(Token)match(input,58,FOLLOW_58_in_ruleBaseType7092); 

                            current = grammarAccess.getBaseTypeAccess().getI16EnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_2, grammarAccess.getBaseTypeAccess().getI16EnumLiteralDeclaration_2()); 
                        

                    }


                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3134:6: (enumLiteral_3= 'i32' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3134:6: (enumLiteral_3= 'i32' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3134:8: enumLiteral_3= 'i32'
                    {
                    enumLiteral_3=(Token)match(input,59,FOLLOW_59_in_ruleBaseType7109); 

                            current = grammarAccess.getBaseTypeAccess().getI32EnumLiteralDeclaration_3().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_3, grammarAccess.getBaseTypeAccess().getI32EnumLiteralDeclaration_3()); 
                        

                    }


                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3140:6: (enumLiteral_4= 'i64' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3140:6: (enumLiteral_4= 'i64' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3140:8: enumLiteral_4= 'i64'
                    {
                    enumLiteral_4=(Token)match(input,60,FOLLOW_60_in_ruleBaseType7126); 

                            current = grammarAccess.getBaseTypeAccess().getI64EnumLiteralDeclaration_4().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_4, grammarAccess.getBaseTypeAccess().getI64EnumLiteralDeclaration_4()); 
                        

                    }


                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3146:6: (enumLiteral_5= 'double' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3146:6: (enumLiteral_5= 'double' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3146:8: enumLiteral_5= 'double'
                    {
                    enumLiteral_5=(Token)match(input,61,FOLLOW_61_in_ruleBaseType7143); 

                            current = grammarAccess.getBaseTypeAccess().getDoubleEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_5, grammarAccess.getBaseTypeAccess().getDoubleEnumLiteralDeclaration_5()); 
                        

                    }


                    }
                    break;
                case 7 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3152:6: (enumLiteral_6= 'string' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3152:6: (enumLiteral_6= 'string' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3152:8: enumLiteral_6= 'string'
                    {
                    enumLiteral_6=(Token)match(input,62,FOLLOW_62_in_ruleBaseType7160); 

                            current = grammarAccess.getBaseTypeAccess().getStringEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_6, grammarAccess.getBaseTypeAccess().getStringEnumLiteralDeclaration_6()); 
                        

                    }


                    }
                    break;
                case 8 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3158:6: (enumLiteral_7= 'binary' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3158:6: (enumLiteral_7= 'binary' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3158:8: enumLiteral_7= 'binary'
                    {
                    enumLiteral_7=(Token)match(input,63,FOLLOW_63_in_ruleBaseType7177); 

                            current = grammarAccess.getBaseTypeAccess().getBinaryEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_7, grammarAccess.getBaseTypeAccess().getBinaryEnumLiteralDeclaration_7()); 
                        

                    }


                    }
                    break;
                case 9 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3164:6: (enumLiteral_8= 'slist' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3164:6: (enumLiteral_8= 'slist' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3164:8: enumLiteral_8= 'slist'
                    {
                    enumLiteral_8=(Token)match(input,64,FOLLOW_64_in_ruleBaseType7194); 

                            current = grammarAccess.getBaseTypeAccess().getSlistEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_8, grammarAccess.getBaseTypeAccess().getSlistEnumLiteralDeclaration_8()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBaseType"


    // $ANTLR start "ruleBOOL"
    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3174:1: ruleBOOL returns [Enumerator current=null] : ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) ) ;
    public final Enumerator ruleBOOL() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;

         enterRule(); 
        try {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3176:28: ( ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) ) )
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3177:1: ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) )
            {
            // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3177:1: ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) )
            int alt64=2;
            int LA64_0 = input.LA(1);

            if ( (LA64_0==65) ) {
                alt64=1;
            }
            else if ( (LA64_0==66) ) {
                alt64=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 64, 0, input);

                throw nvae;
            }
            switch (alt64) {
                case 1 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3177:2: (enumLiteral_0= 'false' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3177:2: (enumLiteral_0= 'false' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3177:4: enumLiteral_0= 'false'
                    {
                    enumLiteral_0=(Token)match(input,65,FOLLOW_65_in_ruleBOOL7239); 

                            current = grammarAccess.getBOOLAccess().getFalseEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_0, grammarAccess.getBOOLAccess().getFalseEnumLiteralDeclaration_0()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3183:6: (enumLiteral_1= 'true' )
                    {
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3183:6: (enumLiteral_1= 'true' )
                    // ../de.thwildau.tm.moses.thrift/src-gen/de/thwildau/tm/moses/thrift/parser/antlr/internal/InternalThrift.g:3183:8: enumLiteral_1= 'true'
                    {
                    enumLiteral_1=(Token)match(input,66,FOLLOW_66_in_ruleBOOL7256); 

                            current = grammarAccess.getBOOLAccess().getTrueEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                            newLeafNode(enumLiteral_1, grammarAccess.getBOOLAccess().getTrueEnumLiteralDeclaration_1()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBOOL"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleThrift_in_entryRuleThrift75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleThrift85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHeader_in_ruleThrift131 = new BitSet(new long[]{0x0000000EC8BB8002L});
    public static final BitSet FOLLOW_ruleDefinition_in_ruleThrift153 = new BitSet(new long[]{0x0000000EC8A00002L});
    public static final BitSet FOLLOW_ruleHeader_in_entryRuleHeader190 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHeader200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInclude_in_ruleHeader247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCppInclude_in_ruleHeader274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_ruleHeader301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInclude_in_entryRuleInclude336 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInclude346 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_ruleInclude383 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleInclude400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCppInclude_in_entryRuleCppInclude441 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCppInclude451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_ruleCppInclude488 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleCppInclude505 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamespace_in_entryRuleNamespace546 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamespace556 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_ruleNamespace594 = new BitSet(new long[]{0x0000000000040020L});
    public static final BitSet FOLLOW_18_in_ruleNamespace615 = new BitSet(new long[]{0x0000000000040020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleNamespace647 = new BitSet(new long[]{0x0000000000040020L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleNamespace671 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleNamespace692 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleNamespace709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleNamespace734 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleNamespace751 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinition_in_entryRuleDefinition793 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefinition803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConst_in_ruleDefinition850 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_ruleDefinition877 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnum_in_ruleDefinition904 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSenum_in_ruleDefinition931 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStruct_in_ruleDefinition958 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnion_in_ruleDefinition985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleException_in_ruleDefinition1012 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleService_in_ruleDefinition1039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConst_in_entryRuleConst1074 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConst1084 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleConst1121 = new BitSet(new long[]{0xFF06400000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleConst1142 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleConst1159 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleConst1176 = new BitSet(new long[]{0x00100000100401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_ruleConstValue_in_ruleConst1197 = new BitSet(new long[]{0x0040000002000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleConst1214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_entryRuleTypeDef1251 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeDef1261 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleTypeDef1298 = new BitSet(new long[]{0xFF06400000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleDefinitionType_in_ruleTypeDef1319 = new BitSet(new long[]{0x0000000001000020L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleTypeDef1340 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTypeDef1358 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnnotation_in_entryRuleAnnotation1399 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAnnotation1409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleAnnotation1446 = new BitSet(new long[]{0x0000000000040020L});
    public static final BitSet FOLLOW_ruleAnnotationElement_in_ruleAnnotation1467 = new BitSet(new long[]{0x0000000006000000L});
    public static final BitSet FOLLOW_25_in_ruleAnnotation1480 = new BitSet(new long[]{0x0000000000040020L});
    public static final BitSet FOLLOW_ruleAnnotationElement_in_ruleAnnotation1501 = new BitSet(new long[]{0x0000000006000000L});
    public static final BitSet FOLLOW_26_in_ruleAnnotation1515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnnotationElement_in_entryRuleAnnotationElement1551 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAnnotationElement1561 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleAnnotationElement1607 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleAnnotationElement1619 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleAnnotationElement1636 = new BitSet(new long[]{0x0040000002000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleAnnotationElement1658 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnum_in_entryRuleEnum1695 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnum1705 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleEnum1742 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnum1759 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleEnum1776 = new BitSet(new long[]{0x0000000020000020L});
    public static final BitSet FOLLOW_ruleEnumElement_in_ruleEnum1797 = new BitSet(new long[]{0x0000000020000020L});
    public static final BitSet FOLLOW_29_in_ruleEnum1810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumElement_in_entryRuleEnumElement1846 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumElement1856 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumElement1898 = new BitSet(new long[]{0x0040000002400002L});
    public static final BitSet FOLLOW_22_in_ruleEnumElement1916 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleEnumElement1933 = new BitSet(new long[]{0x0040000002000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleEnumElement1957 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSenum_in_entryRuleSenum1994 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSenum2004 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleSenum2041 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSenum2058 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleSenum2075 = new BitSet(new long[]{0x0000000020000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSenum2093 = new BitSet(new long[]{0x0040000022000010L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleSenum2115 = new BitSet(new long[]{0x0000000020000010L});
    public static final BitSet FOLLOW_29_in_ruleSenum2130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStruct_in_entryRuleStruct2166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStruct2176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleStruct2213 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleStruct2230 = new BitSet(new long[]{0x0000000110000000L});
    public static final BitSet FOLLOW_32_in_ruleStruct2248 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleStruct2262 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleField_in_ruleStruct2283 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_ruleStruct2296 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleStruct2317 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnion_in_entryRuleUnion2354 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnion2364 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_ruleUnion2401 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleUnion2418 = new BitSet(new long[]{0x0000000110000000L});
    public static final BitSet FOLLOW_32_in_ruleUnion2436 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleUnion2450 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleField_in_ruleUnion2471 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_ruleUnion2484 = new BitSet(new long[]{0x0000000001000002L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleUnion2505 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleException_in_entryRuleException2542 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleException2552 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleException2589 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleException2606 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleException2623 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleField_in_ruleException2644 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_ruleException2657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleService_in_entryRuleService2693 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleService2703 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleService2740 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleService2757 = new BitSet(new long[]{0x0000001010000000L});
    public static final BitSet FOLLOW_36_in_ruleService2775 = new BitSet(new long[]{0x0000000000040020L});
    public static final BitSet FOLLOW_ruleServiceRef_in_ruleService2796 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleService2810 = new BitSet(new long[]{0xFF06580020040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFunction_in_ruleService2831 = new BitSet(new long[]{0xFF06580020040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_ruleService2844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleServiceRef_in_entryRuleServiceRef2880 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleServiceRef2890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleServiceRef2937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleField_in_entryRuleField2972 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleField2982 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldID_in_ruleField3028 = new BitSet(new long[]{0xFF06460000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFieldReq_in_ruleField3050 = new BitSet(new long[]{0xFF06400000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleField3072 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleField3089 = new BitSet(new long[]{0x004000E003400002L});
    public static final BitSet FOLLOW_22_in_ruleField3107 = new BitSet(new long[]{0x00100000100401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_ruleConstValue_in_ruleField3128 = new BitSet(new long[]{0x004000E003000002L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleField3151 = new BitSet(new long[]{0x004000E002000002L});
    public static final BitSet FOLLOW_37_in_ruleField3166 = new BitSet(new long[]{0x004000C002000002L});
    public static final BitSet FOLLOW_38_in_ruleField3181 = new BitSet(new long[]{0x0040008002000002L});
    public static final BitSet FOLLOW_39_in_ruleField3196 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleField3208 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleField_in_ruleField3229 = new BitSet(new long[]{0xFF06460020040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_29_in_ruleField3242 = new BitSet(new long[]{0x0040000002000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleField3262 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldID_in_entryRuleFieldID3300 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFieldID3311 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleFieldID3351 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleFieldID3369 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldReq_in_entryRuleFieldReq3410 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFieldReq3421 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_41_in_ruleFieldReq3459 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleFieldReq3478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction3518 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunction3528 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionType_in_ruleFunction3574 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleFunction3591 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleFunction3608 = new BitSet(new long[]{0xFF06460004040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleField_in_ruleFunction3629 = new BitSet(new long[]{0xFF06460004040060L,0x0000000000000001L});
    public static final BitSet FOLLOW_26_in_ruleFunction3642 = new BitSet(new long[]{0x0040200002000002L});
    public static final BitSet FOLLOW_ruleThrows_in_ruleFunction3663 = new BitSet(new long[]{0x0040000002000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleFunction3681 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionType_in_entryRuleFunctionType3718 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunctionType3728 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleFunctionType3772 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleFunctionType3804 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleFunctionType3846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleThrows_in_entryRuleThrows3881 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleThrows3891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleThrows3928 = new BitSet(new long[]{0x0000000001000000L});
    public static final BitSet FOLLOW_24_in_ruleThrows3940 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleThrowsField_in_ruleThrows3961 = new BitSet(new long[]{0x0000000006000000L});
    public static final BitSet FOLLOW_25_in_ruleThrows3974 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleThrowsField_in_ruleThrows3995 = new BitSet(new long[]{0x0000000006000000L});
    public static final BitSet FOLLOW_26_in_ruleThrows4009 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleThrowsField_in_entryRuleThrowsField4045 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleThrowsField4055 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldID_in_ruleThrowsField4101 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleThrowsField4122 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleThrowsField4139 = new BitSet(new long[]{0x0040000002000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleThrowsField4161 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFieldType_in_entryRuleFieldType4198 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFieldType4208 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinitionRef_in_ruleFieldType4255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_ruleFieldType4282 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerTypeRef_in_ruleFieldType4309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinitionType_in_entryRuleDefinitionType4344 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefinitionType4354 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_ruleDefinitionType4401 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerTypeRef_in_ruleDefinitionType4428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerType_in_entryRuleContainerType4463 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContainerType4473 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMapType_in_ruleContainerType4520 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSetType_in_ruleContainerType4547 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleListType_in_ruleContainerType4574 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMapType_in_entryRuleMapType4609 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMapType4619 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleMapType4656 = new BitSet(new long[]{0x0008800000000000L});
    public static final BitSet FOLLOW_ruleCppType_in_ruleMapType4677 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_47_in_ruleMapType4690 = new BitSet(new long[]{0xFF06400000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleMapType4711 = new BitSet(new long[]{0x0000000003000000L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleMapType4732 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleMapType4745 = new BitSet(new long[]{0xFF06400000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleMapType4766 = new BitSet(new long[]{0x0001000001000000L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleMapType4787 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleMapType4800 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSetType_in_entryRuleSetType4836 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSetType4846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleSetType4883 = new BitSet(new long[]{0x0008800000000000L});
    public static final BitSet FOLLOW_ruleCppType_in_ruleSetType4904 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_47_in_ruleSetType4917 = new BitSet(new long[]{0xFF06400000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleSetType4938 = new BitSet(new long[]{0x0001000001000000L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleSetType4959 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleSetType4972 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleListType_in_entryRuleListType5008 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleListType5018 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleListType5055 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_47_in_ruleListType5067 = new BitSet(new long[]{0xFF06400000040020L,0x0000000000000001L});
    public static final BitSet FOLLOW_ruleFieldType_in_ruleListType5088 = new BitSet(new long[]{0x0001000001000000L});
    public static final BitSet FOLLOW_ruleAnnotation_in_ruleListType5109 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleListType5122 = new BitSet(new long[]{0x0008000000000002L});
    public static final BitSet FOLLOW_ruleCppType_in_ruleListType5143 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCppType_in_entryRuleCppType5181 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCppType5192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleCppType5230 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleCppType5245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseTypeRef_in_entryRuleBaseTypeRef5290 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBaseTypeRef5300 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBaseType_in_ruleBaseTypeRef5345 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerTypeRef_in_entryRuleContainerTypeRef5380 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContainerTypeRef5390 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerType_in_ruleContainerTypeRef5435 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinitionRef_in_entryRuleDefinitionRef5470 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefinitionRef5480 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_ruleDefinitionRef5527 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstValue_in_entryRuleConstValue5562 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstValue5572 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinitionRef_in_ruleConstValue5619 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanRef_in_ruleConstValue5646 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumberRef_in_ruleConstValue5673 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringRef_in_ruleConstValue5700 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstList_in_ruleConstValue5727 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstMap_in_ruleConstValue5754 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumberRef_in_entryRuleNumberRef5789 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumberRef5799 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHexRef_in_ruleNumberRef5846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDoubleRef_in_ruleNumberRef5873 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLongRef_in_ruleNumberRef5900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHexRef_in_entryRuleHexRef5935 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHexRef5945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_HEX_in_ruleHexRef5986 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLongRef_in_entryRuleLongRef6026 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLongRef6036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleLongRef6077 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDoubleRef_in_entryRuleDoubleRef6117 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDoubleRef6127 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DOUBLE_in_ruleDoubleRef6168 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanRef_in_entryRuleBooleanRef6208 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBooleanRef6218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBOOL_in_ruleBooleanRef6263 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringRef_in_entryRuleStringRef6298 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringRef6308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringRef6349 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstList_in_entryRuleConstList6389 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstList6399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleConstList6443 = new BitSet(new long[]{0x0020000000000000L});
    public static final BitSet FOLLOW_53_in_ruleConstList6468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleConstList6488 = new BitSet(new long[]{0x00100000100401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_ruleConstValue_in_ruleConstList6510 = new BitSet(new long[]{0x00700000120401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleConstList6527 = new BitSet(new long[]{0x00300000100401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_53_in_ruleConstList6542 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstMap_in_entryRuleConstMap6579 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstMap6589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleConstMap6633 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleConstMap6658 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleConstMap6678 = new BitSet(new long[]{0x00100000100401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_ruleConstValue_in_ruleConstMap6700 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleConstMap6712 = new BitSet(new long[]{0x00100000100401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_ruleConstValue_in_ruleConstMap6733 = new BitSet(new long[]{0x00500000320401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_ruleListSeparator_in_ruleConstMap6750 = new BitSet(new long[]{0x00100000300401F0L,0x0000000000000006L});
    public static final BitSet FOLLOW_29_in_ruleConstMap6765 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleListSeparator_in_entryRuleListSeparator6803 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleListSeparator6814 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleListSeparator6852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleListSeparator6871 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName6912 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQualifiedName6923 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName6963 = new BitSet(new long[]{0x0080000000000002L});
    public static final BitSet FOLLOW_55_in_ruleQualifiedName6982 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQualifiedName6997 = new BitSet(new long[]{0x0080000000000002L});
    public static final BitSet FOLLOW_56_in_ruleBaseType7058 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleBaseType7075 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleBaseType7092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleBaseType7109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_ruleBaseType7126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_61_in_ruleBaseType7143 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleBaseType7160 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_ruleBaseType7177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_ruleBaseType7194 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleBOOL7239 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_ruleBOOL7256 = new BitSet(new long[]{0x0000000000000002L});

}